关于加性操作符 隐式转换

在使用加性操作符时,会发生隐式转换,有一个是字符串,则另一个也要转换为字符串拼接。最让我不解的null + null = 0;

    console.log("" + "");空
    console.log(null + null);0
    console.log(null + "");null
    console.log("" + null);null
    console.log("" + 19);"19"
    console.log(null + 19);19

既然"" + 19 = "19",为什么null + "" 不等于"null"呢?希望不吝赐教!

阅读 1.9k
2 个回答

对象转数字你可以看这部分
null + "" 就是等于"null"的吧?

console.log(null+'',typeof(null+''))

因为+号有两种含义,1是用于字符串的拼接,2是用于数字加法。
如果+号其中一个是字符串就执行拼接。
所以 “”+null = null;
当没有字符串操作时,会先进行 valueOf 和 toString操作,对象和数组就是这样操作的。
比如 [1,2]+[2,3] = "1,22,3"
而null 属于基本类型,会对它进行强制类型转换,结果为0,所以null + null =0;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题