从语言设计的 Angular 来看,为什么
if ('k' in 42);
抛出 TypeError
异常
for ('k' in 42);
不是吗?
我已阅读 ECMAScript 规范中的以下部分:
有人可以解释这种不一致的原因吗?
为什么 if (...)
中的表达式 'k' in 42
不能计算为 false
?
最佳答案
重新阅读 in 部分。
If Type(rval) is not Object, throw a TypeError exception.
42不是一个对象,它是一个数字
typeof 42 // 'number'
typeof new Number(42) // 'object'
for-in 语句不需要一个对象,实际上它实际上将它转换为一个对象
Let obj be ToObject(experValue).
我不认为这是这种行为背后的原因,它可能是一个设计缺陷(不一致)
关于javascript - 为什么如果 ('k' 在 42);对于 42 中的 ('k' 抛出异常);不会,在 javascript 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20702251/