为什么+()=> {}评估成NaN?

时间:2015-11-22 14:48:04

标签: javascript

我在Chrome检查器中玩了一下,发现执行以下语句+ () => {}会返回NaN。对我而言,它看起来不应该是有效的JavaScript,所以我的问题是:为什么这句话导致它被视为数字?

2 个答案:

答案 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)