你需要A在循环中设置numbers,你需要B从你的函数中返回container,
for (var i = 50, numbers = ""; i < limit; i += 50) {
numbers = insertVal(i, numbers); // A
}
document.getElementsByClassName("width")[0].innerHTML = numbers;
function insertVal(i, container) {
if (i % 100 === 0) {
container += i;
}
return container; // B
}
但是,这比您的工作循环效率低,因为每个函数调用都很昂贵
如果您稍后再返回此代码,您在其中传递numbers 的方式可能会让人感到困惑。如果这里有必要使用函数,您可能需要考虑这两种代码模式中的一种
测试作为它自己的方法,给出一个布尔(等效)值,这样你就知道输入没问题
function test(i) {
return i % 100;
}
for (var i = 50, numbers = ""; i < limit; i += 50) {
if (test(i))
numbers += i;
}
document.getElementsByClassName("width")[0].innerHTML = numbers;
Test 给出的结果可能是您感兴趣的输入的转换或预期的错误结果,例如null
function test(i) {
if (i % 100)
return i;
return null;
}
for (var i = 50, numbers = "", e; i < limit; i += 50) {
e = test(i);
if (e !== null)
numbers += e;
}
document.getElementsByClassName("width")[0].innerHTML = numbers;
@CarlEdwards 重复数据删除是为这些编写函数的可接受理由。但是,如果循环几乎完全相同,请考虑是否可以将 for 本身也移动到循环中
考虑这个循环在函数my_loop 内的示例,这意味着您可以重用代码但只调用函数两次
function my_loop(i, j) {
for (var numbers = ""; i < j; i+= 50) {
if (i % 100 === 0) {
numbers += i;
}
}
return numbers;
}
document.getElementsByClassName("width")[0].innerHTML = my_loop(50, limit);
document.getElementsByClassName("width")[1].innerHTML = my_loop(250, limit2);