所以我只是想知道为什么以下代码不起作用。我正在寻找一种类似的策略来将for循环放在一个变量中。
var whatever = for (i=1;i<6;i++) {
console.log(i)
};
谢谢!
答案 0 :(得分:5)
因为for
循环是语句,并且JavaScript语句中没有值。它根本不是语言的语法和语义中提供的东西。
在某些语言中,每个语句都被视为表达式(例如Erlang)。在其他情况下,情况并非如此。 JavaScript属于后一类。
有点像问马为什么马有长而粗糙的尾巴而没有翅膀。
编辑 - 查看Underscore库或“map”原型的“现代”附加组件,以获取“map”,“reduce”和“forEach”功能。这些允许在表达式评估上下文中进行迭代操作(当然需要付出代价)。
答案 1 :(得分:2)
我认为你所寻找的是功能:
var whatever = function(min, max) {
for (var i = min; i < max; ++i) {
console.log(i);
}
}
......以后......
whatever(1, 6);
这种方法允许你在变量中封装循环(或任何其他代码,甚至声明其他函数)。
答案 2 :(得分:0)
您的问题是for循环不返回值。你可以构造一个包含足够元素的数组来保存循环的所有迭代,然后在循环中赋值给它:
arry[j++] = i;
答案 3 :(得分:0)
你可以这样做,但似乎你可能想要查看匿名函数。使用匿名函数,您可以执行此操作:
var whatever = function(){
for (var i=1;i<6;i++) {
console.log(i);
}
};
然后
whatever(); //runs console.log(i) i times.