Chrome内部循环行为的意外Javascript

Unexpected Javascript for-loop behavior inside Chrome

本文关键字:意外 Javascript 内部 循环 Chrome      更新时间:2024-06-18

所以我在chrome选项卡中发现了令人难以置信的奇怪java脚本行为。页面位于登录名后面,所以我无法发布,但有人能解释到底发生了什么吗???

for(var z in ""){ console.log(z) }
contains
//undefined

嗯。。。

var key = ""
for(var i in key){ console.log(i) }
contains
//undefined
Object.getOwnPropertyNames(key)
//["length"]
Object.getOwnPropertySymbols(key)
//[]
window[key]
//undefined

起初,我认为这是JS行为之一,并准备将其提交给JSWTF,但该行为在另一个chrome选项卡中正常运行:

for(var i in ""){ console.log('ran',i) }
//undefined

一个值是如何分配给一个空白字符串的?它在哪里?for循环在做什么?

edit:firefox中的同一页面在控制台中返回预期的行为。我还没有测试过其他浏览器

在原始页面上有一个ES6填充程序,它将函数contains()添加到String原型中。你可以自己做这样的事情:

String.prototype.contains = 
    function(e) {
        return this.indexOf(e) > -1;
    };

最终标准化的ES6函数是includes(),所以将来当开发人员更新垫片时,您可能会看到函数名称发生了更改。