N
Number([1]) // 1
Number方法的参数是对象时,将返回NaN,除非是包含单个数值的数组,单个数值数组则返回该数值。
如果上面的自执行函数让你感兴趣了,那我就直接再表演一点魔法
// 自执行函数的方法
// 1.函数前添加感叹号
!function(){alert('123')}() // true
// 2.函数声明用括号包起来
(function(){alert('123')})() // true
// 3.括号位置放在最外层
(function(){alert('123')}()) // true
var i = function(){return 10}(); // undefined
1 && function(){return true}(); // true
1, function(){alert('123')}(); // undefined
!function(){alert('123')}() // true
~function(){alert('123')}() // -1
void function(){alert('123')}() // undefined
new function(){alert('123')}() // Object
delete function(){alert('123')}() // true
4.如何识别NaN
三种方式: isNaN 、 Number.isNaN 、 Object.is 、自己polyfill
isNaN 的参数会强制类型转换为数字类型, 推荐使用 Number.isNaN 。
// JS内置 isNaN
isNaN(undefined) // true
Number.isNaN(undefined) // false
// Object.is
0 === -0 // false
Object.is(0, -0) // false
Object.is(NaN, NaN) // true
// polyfill
const isNaN = (n) => n !== n;