JavaScript: проверьте свою интуицию

Math.max (3, 0); // 3 Тут все просто. Math.max (3, {}); // NaN попытаемся выполнить toNumber для {}: выполним valueOf и проверим примитив ли это — нет, тогдавыполним toString и получим »[object Object]»; выполним для получившейся строки toNumber и получим NaN; в случае получения NaN Math.max () всегда возвращает NaN. Math.max (3, []); // 3 попытаемся выполнить toNumber для []: выполним valueOf и проверим примитив ли это — нет, тогдавыполним toString и получим »; выполним для получившейся строки toNumber и получим 0;3 > 0 Math.max (-1, [1]); // 1 попытаемся выполнить toNumber для [1]: выполним valueOf и проверим примитив ли это — нет, тогдавыполним toString и получим »1»; выполним для получившейся строки toNumber и получим 1;-1 Math.max (-1, [1, 4]); // NaN попытаемся выполнить toNumber для [1,4]: выполним valueOf и проверим примитив ли это — нет, тогдавыполним toString и получим »1,4»; выполним для получившейся строки toNumber и получим NaN; в случае получения NaN Math.max () всегда возвращает NaN. Math.max (3, true); // 3 попытаемся выполнить toNumber для true: выполним valueOf и проверим примитив ли это — да, тогда toNumber (true) === 1 3 > 1 Math.max (3, 'foo'); // NaN для 'foo' toNumber возвращает NaN.В случае получения NaN Math.max () всегда возвращает NaN. Math.max (-1, null); // 0 toNumber (null) === 0 -1 < 0 Math.max(-1, undefined); // NaN toNumber(undefined) === NaN в случае получения NaN Math.max() всегда возвращает NaN.

© Habrahabr.ru