arrays - JavaScript null 和加号 (+) 运算符

标签 arrays null javascript

我正在努力理解 JavaScript 的核心。我知道它没有太多的实现值(value)。如果你不想回答,就离开吧。但是,如果您能在应用加法 (+) 时帮助理解以下类型强制转换,我将不胜感激。

1. 
null + null // 0
2.
null + undefined; // NaN
3.
null + NaN; // NaN
4. 
1 + null; //1
5. 
true + null; //1
6. 
true + [null]; //"true"

我知道 null 是一个空对象或缺失对象。如果您能在这里解释类型强制或一元 (+) 操作的步骤,我将不胜感激。感谢您阅读问题。

最佳答案

这包含在 11.6.1 The Addition operator ( + ) 中- 请随意阅读并遵守规则。

可以通过查看 ToNumber 来解释前五个案例。 :

Value       ToNumber(Value)
---------   ---------------
null        0
undefined   NaN
NaN         NaN
1           1
true        1

并且0 + 0 == 0(和1 + 0 == 1),而x + NaN or NaN + x evaluates to NaN .由于上面的每个值也是原始值,ToPrimitive(x)计算结果为 x(其中 x 不是字符串)并且未调用“字符串连接子句”。

最后一种情况的不同之处在于,它来自数组上的 ToPrimitive(最终调用 Array.prototype.toString),结果是 string 值。因此,它最终应用 ToString,而不是 ToNumber,如下所示:

   true + [null]
=> true + ""          // after ToPrimitive([null]) => ""
=> "true" + ""        // after ToString(true) => "true"
=> "true"             // via String Concatenation

关于arrays - JavaScript null 和加号 (+) 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531660/

相关文章:

java - 将对象的值从 DAO 传递到 2D 数组中的 servlet

java - Java 空指针异常

ios - block 执行后变量返回 null

javascript - 如何保护主API key ?

javascript - 使用 jQuery 或 JavaScript 从 Select 下拉数组中选择或获取所有值

javascript - IE9 iframe 窗口删除后将无法从释放的脚本执行代码?

javascript - 通过属性查找一个数组中不存在于另一个数组中的对象

java - 二分查找compareTo字符串对象

c++ - 在固定数量的线程之间划分数组

c# - linq to sql ToList() 方法值