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

jus*_*vac 7 javascript ecmascript-5

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

if('k' in null);

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

但:

for('k' in null);

版画 undefined

在ECMAScript规范中:

它是语言设计的缺陷吗?

Chr*_*yes 2

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

我根本不同意这个决定 - 我认为这for (k in null)应该会引发错误,特别是在严格模式下运行时。但你可以看到差异是如何产生的。