为什么这段代码返回1,toString方法甚至没有在任何地方调用,+运算符应该将其操作数转换为数字,但我尝试了这个并返回NaN
+{} // NaN
+{a: 2} //NaN
那么为什么这段代码返回 1 ???
+({x:+null , y : +'001' , toString : function(){return this.x+this.y;}})
最佳答案
+({x:+null , y : +'001' , toString : function(){return this.x+this.y;}})
您正在重载toString
哪个函数返回 (+null+'001')
+null 将 null 强制为 0;
+'001' 将字符串强制为 1
您正在从 toString 返回 1。
在前面的情况下,对象文字的非重载 toString 方法的结果是 "[object Object]"
强制转换为数字会得到 NaN。
这里唯一重要的是 toString(无论是否重载)返回的内容。
关于javascript - 有人可以向我解释一下为什么这段代码返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52471230/