这段JS代码是什么意思?作用是什么?

翻看一段源码时发现这样一种写法,不知道干什么用的,感觉多此一举,有人知道为什么要这样写吗

IS_DONTENUM_BUGGY = (function() {
    for (var p in { toString: 1 }) {
        if (p === 'toString') {
            return false;
        }
    }
    return true;
})(),
阅读 1.6k
1 个回答

涉及到一个概念DontEnum(ES5里称之为Enumerable),即属性不能被for..in循环枚举

for..in不会枚举出
toString,
isPrototypeOf,
valueOf
之类的内置属性,它们是不可枚举的
如果我们重写它们,不同的浏览器(没错,我就是说的IE)结果就会有分歧,需要IS_DONTENUM_BUGGY进行标识。
详情 戳这里

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题