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

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

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

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

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

宣传栏