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;nthis
在执行回调时用作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我不知道,我很高兴听到它!上面说上下文参数的默认值是全局对象,我觉得有点奇怪;我本以为它会使用每个数组元素。