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