标签:javascript loops global-variables
我有一个非常令人困惑的问题.我认为最好用代码解释:
var length = 0; // I want to avoid this variable being global
function loop(array, func) {
for (var i = 0; i < array.length; i++) {
array[i].func(length);
length += array[i].number;
if (func) {
func();
}
}
}
function bar(number) {
this.func = function(len) {
console.log(len);
};
this.number = number;
}
function main() {
var array = [];
for (var j = 1; j < 3; j++) {
var foo = new bar(j);
array.push(foo);
}
loop(array, function() {
loop(array);
});
}
main();
在其他一些代码中我有一个与此类似的循环.我根本无法弄清楚如何在这段代码中使长度变量局部变量.我无法将它传递给函数,因为它调用自身.我无法将它移动到任何地方,因为循环不断弄乱.
感谢您的任何帮助!
解决方法:
不确定你要完成的所有这些,但它看起来像main是循环的调用者,所以你可以让length成为循环的参数,并且主循环调用循环的初始长度为0并且有循环和回调返回改变的长度:
function loop(array, length, func) {
for (var i = 0; i < array.length; i++) {
array[i].func(length);
length += array[i].number;
if (func) {
length = func(length);
}
}
return length;
}
function bar(number) {
this.func = function(len) {
console.log(len);
};
this.number = number;
}
function main() {
var array = [];
for (var j = 1; j < 3; j++) {
var foo = new bar(j);
array.push(foo);
}
loop(array, 0, function(newLen) {
return loop(array, newLen);
});
}
main();
标签:javascript,loops,global-variables 来源: https://codeday.me/bug/20190828/1747023.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。