为什么运算符equal没有将从valueOf()获得的null转换为零
Why the operator equal is not converting null obtained from valueOf() to zero?
在最后一行中,我知道调用a.valueOf()是因为操作数的类型不同。既然知道null可以转换为零,为什么浏览器不会将null转换为零并在最后返回false?
function A(){}
A.prototype.valueOf = function(){return null}
var a = new A
a == null // => This is always false
a == 0 // => true or false depending on the browser you are using.
我知道使用valueOf()是因为操作数不是同一类型的
不是一般的"当它们不属于同一类型时",不是。ToPrimitive
(以及随后的[[DefaultValue]]
和.valueOf
)仅在将布尔值、数字或字符串与对象进行比较时调用。
空转换为零
是的,当ToNumber
被调用时。例如,当ToString
被调用时,它不会。
为什么浏览器不会将null转换为零并在最后返回false?
因为null
和0
是不同的基元类型,在抽象等式比较算法中没有指定转换,所以没有调用ToNumber
。他们根本不平等。
然而,在Firefox中,有一个错误。
相关文章:
- 为什么 Javascript 在变量赋值时将 null 转换为字符串
- 无法在jasmine it函数中将未定义或null转换为对象
- 为什么运算符equal没有将从valueOf()获得的null转换为零
- DWR 报告转换器错误,将 null 从 Javascript 传递到 Java 类
- 在 javascript 中将 “null” 转换为 null
- 将Python None转换为JavaScript null
- 无法将未定义或null转换为对象
- 无法使用Twipsy将null转换为对象
- 为什么 null 未在条件语句中转换为布尔值
- 如何解决TypeError:不能在函数中将未定义或null转换为对象.键(& lt; anonymous>)
- 将json数组转换为查询字符串返回null
- Jquery .position将null转换为0
- 当使用hasOwnProperty时,不能将null或undefined转换为对象
- Javascript:避免使用null或未定义变量进行字符串到整数或浮点类型转换的异常
- 将对象中存在的对象转换为NULL值
- 可以在检查undefined/null时使用类型强制转换
- JavaScript将NULL转换为0
- $.ajaxPrefilter引发未捕获类型错误:无法将null转换为对象异常
- VS代码错误”;无法将未定义或null转换为对象“”;所有JavaScript文件
- 未捕获的类型错误:无法将未定义或 null 转换为对象