gpt4 book ai didi

Javascript forEach 循环 n 次

转载 作者:行者123 更新时间:2023-11-28 19:00:48 27 4
gpt4 key购买 nike

我知道 forEach 的性能不是很好,但我正在尝试使用它(只是一个学习练习)来循环某些内容多次(n)次。

我正在尝试这个,但我无法让它工作:

var i = 0;
new Array(10).prototype.foreach.call( function(){ i++; } );

可以这样使用吗?我的代码有什么问题吗?谢谢!

最佳答案

在内部,你可以想到 forEach定义如下:

Array.prototype.forEach = function(cb) {
for( var i=0, l=this.length; i<l; i++) {
cb(this[i]);
}
}

请注意,这只是一个基本示例,它并不完全正确 XD 但对于我要表达的观点来说已经足够了。即this .

通常,this是您正在处理的数组。但随着.call()您调用的电话,this === function(){ i++; } 。函数的length是它接受的参数数量,在您的情况下为零,因此代码永远不会运行。即使它确实如此(例如 function(x){ i++; } ),函数内的代码也不会运行,因为那必须是 .call() 的第二个参数。 (成为 .forEach() 的第一个参数)

试试这个:

[].forEach.call(new Array(10), function() {i++;});

这得到 forEach方法,在长度为 10 的数组上调用它,并将函数作为回调参数传递。

我上面的说法是错误的。 new Array(10)不按你想要的方式工作。你需要一些像 Array.apply(null, Array(10)).map(function () {}) 这样的黑客技术得到一个数组 forEach将继续工作。你最好只使用 for .

关于Javascript forEach 循环 n 次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32590105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com