Javascript";forEach“;循环问题

Javascript";forEach“;循环问题,javascript,javascript-framework,Javascript,Javascript Framework,我在某处看到了代码片段: list.forEach(callback, this); 我理解“forEach”循环,除了这里使用的“this”关键字外,“this”是什么意思 如果我将list.forEach(callback)转换为普通for循环,我认为它是: for(var n=0; n<list.length; n++){ callback(list[n]); } for(var n=0;nthis在执行回调时用作this对象 for(var n=0; n<list

我在某处看到了代码片段:

list.forEach(callback, this);
我理解“
forEach
”循环,除了这里使用的“
this
”关键字外,“
this
”是什么意思

如果我将list.forEach(callback)转换为普通for循环,我认为它是:

for(var n=0; n<list.length; n++){
   callback(list[n]);
}

for(var n=0;n
this
在执行回调时用作this对象

 for(var n=0; n<list.length; n++){
       callback.call(this, list[n]);
    }

for(var n=0;n
是当前对象。将在对象上下文中调用方法
list.forEach()
。您应该能够通过将要循环的对象作为第二个参数传递来使用代码段,例如:

var obj = {
    a: "foo",
    b: "bar"
}

list.forEach(callback, obj);

forEach
不是标准的javascript,但可能是库的一部分。Dojo Toolkit有这样一个
forEach
构造,或者它可能是添加到
Array()
原型中的一个方法


参数很可能是哪个对象应该具有回调函数的上下文的标识符。也就是说,如果回调函数本身调用
,那么它应该引用回调函数之外的哪个对象。

在接受单个v的函数的数组上有一个
forEach
应用于集合中每个元素的值。下面是使用forEach循环解析网页url参数的实际示例:

var query = location.search.slice(1);    
var result = {}, keyValuePairs = query.split('&');

keyValuePairs.forEach(function(keyValuePair) {
    keyValuePair = keyValuePair.split('=');
    result[keyValuePair[0]] = keyValuePair[1] || '';
});

然后,您可以将
result
对象用作关联数组或类似于映射的结构,并使用
var somevalue=result[“somekey”]

什么上下文列出.forEach(回调,this)
出现在中?如果不知道这一点,我们不可能说什么
我看一下好的,谢谢,我得到了你的答案,'这'是上下文。但是'这'在中是什么意思forEach@Mellon
只是您上下文中的一个对象。它是可选的。它将成为ES5的标准,并且Firefox已经支持它。@Pointy我不知道,我很高兴听到它!上面说上下文参数的默认值是全局对象,我觉得有点奇怪;我本以为它会使用每个数组元素。