为什么我不能将循环分配给变量?

时间:2012-06-19 20:58:43

标签: javascript

所以我只是想知道为什么以下代码不起作用。我正在寻找一种类似的策略来将for循环放在一个变量中。

var whatever = for (i=1;i<6;i++) {
console.log(i)
};

谢谢!

4 个答案:

答案 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.