为什么if(键入null); for for时抛出异常(key in null);不,它是语言设计上的缺陷吗?

时间:2013-12-31 08:11:57

标签: javascript ecmascript-5

从语言设计的角度来看,为什么:

if('k' in null);

TypeError: Cannot use 'in' operator to search for 'k' in null

BUT:

for('k' in null);

打印undefined

ECMAScript规范中的

这是语言设计的缺陷吗?

1 个答案:

答案 0 :(得分:2)

从设计的角度来看,很难说k in null的适当回报值应该是什么(true显然是错误的,但false具有误导性),但很容易说在for-in语句中,您应该跳过循环。

我根本没有同意这个决定 - 我认为for (k in null)应该抛出一个错误,特别是如果在严格模式下运行。但你可以看出差异会如何产生。