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

标签 javascript ecmascript-5

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

如果('k'为空);

TypeError:无法使用“in”运算符在 null 中搜索“k”

但是:

对于('k'为空);

打印undefined

在 ECMAScript 规范中:

是语言设计缺陷吗?

最佳答案

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

我完全不同意这个决定 - 我认为 for (k in null) 应该抛出错误,尤其是在严格模式下运行时。但是您可以看到差异是如何产生的。

关于javascript - 为什么 if(key in null); for(key in null)时抛出异常;不,是语言设计上的缺陷吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20854100/

相关文章:

javascript - 如何使用 get/set 获取属性以使用 JSON.stringify() 进行序列化

javascript - 如何确保浏览器能够支持 **{get X() {}}**

javascript - 包含 "this"关键字的方法在另一个方法中调用时与分配给局部变量时的工作方式不同

javascript - 在表格底部显示页面长度

Javascript - ECMAScript 5 之前的 bind()/如何使用 apply() 或 call() 进行模拟?

JavaScript:严格模式和匿名函数

javascript - 单击按钮后如何更改颜色按钮

javascript - 如何使用传递给乐趣的对象作为内部函数的上下文?

javascript - rspec 单击一个跨度

javascript - 如何以包含大约相同数量的男孩和女孩的方式将一些学生分成不同的组