azt*_*ack 9 javascript ecmascript-5
从语言设计的角度来看,为什么呢
if ('k' in 42);
Run Code Online (Sandbox Code Playgroud)
抛出TypeError异常
for ('k' in 42);
Run Code Online (Sandbox Code Playgroud)
才不是?
我已经阅读了ECMAScript规范中的以下部分:
有人可以解释这种不一致的理由吗?
为什么不能表达'k' in 42的if (...)只是评估为false?
重新阅读 in 部分。
If Type(rval) is not Object, throw a TypeError exception.
Run Code Online (Sandbox Code Playgroud)
42 不是一个对象,而是一个数字
typeof 42 // 'number'
typeof new Number(42) // 'object'
Run Code Online (Sandbox Code Playgroud)
for-in 语句不需要对象,事实上它实际上将其转换为对象
Let obj be ToObject(experValue).
Run Code Online (Sandbox Code Playgroud)
我不认为这是这种行为背后的原因,这可能是一个设计缺陷(不一致)
| 归档时间: |
|
| 查看次数: |
229 次 |
| 最近记录: |