Javascript 为什么+()=>{}计算为NaN?

Javascript 为什么+()=>{}计算为NaN?,javascript,Javascript,我在Chrome inspector中玩了一会儿,发现执行以下语句+=>{}返回NaN。对我来说,这看起来不应该是有效的JavaScript,所以我的问题是:为什么这条语句会导致它被视为一个数字?您实际上将一个箭头函数解析为一个数字,并将其转换为NaN 这是一条捷径 function sqr (x) { return x * x; } 当您执行以下操作时: >>+123 >>123 >>+函数f{} >>楠 类似地,由于arrow函数和其他函数一样,将其转换为Number将产生NaN >

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

您实际上将一个箭头函数解析为一个数字,并将其转换为NaN

这是一条捷径

function sqr (x) {
   return x * x;
}
当您执行以下操作时:

>>+123

>>123

>>+函数f{}

>>楠

类似地,由于arrow函数和其他函数一样,将其转换为Number将产生NaN

>>+=>{}

>>楠

让我们把它分解一下

ECMAScript 6引入了一种新的表示法,因此=>{}仅仅是[1]函数{}。这将返回一个函数对象

当你在表达式中有一个+且在它前面没有任何东西时,它会尝试将它后面的任何东西转换成一个数字。当你试图将一个函数转换成一个数字时,你会得到一个NaN


注[1]在这个例子中,它没有什么区别,但箭头符号实际上更像函数{}.bindthis。

你见过:-@transistor09奇怪,我以前没有见过这种符号这是错误的。箭头函数没有执行,它被转换成一个数字。
function sqr (x) {
   return x * x;
}