我在Chrome检查器中玩了一下,发现执行以下语句+ () => {}
会返回NaN
。对我而言,它看起来不应该是有效的JavaScript,所以我的问题是:为什么这句话导致它被视为数字?
答案 0 :(得分:5)
您实际上已将arrow
函数解析为一个将转换为NaN
的数字
(x) => { x * x}
这是
的捷径function sqr (x) {
return x * x;
}
执行
等操作时
>> + "123"
>> 123
>> + function f () {}
>> NaN
类似,因为箭头函数就像任何其他函数一样,将它转换为Number将产生
NaN
>> +() => {}
>> NaN
答案 1 :(得分:3)
让我们把它分解。
ECMAScript6引入了新的Arrow function表示法,因此() => {}
仅仅是 [1] function () {}
。这将返回一个函数对象。
如果表达式中有+
之前没有任何内容,它会尝试将之后的任何内容转换为数字。当您尝试将function
转换为数字时,会得到NaN
。
P.S。 [1]为了这个例子它没有区别,但箭头符号实际上更像(function () {}).bind(this)
。