0

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

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

谢谢!

4

4 回答 4

5

因为for循环是一个语句,并且在 JavaScript 语句中没有值。它根本不是语言的语法和语义中提供的东西。

在某些语言中,每条语句都被视为一个表达式(例如 Erlang)。在其他情况下,情况并非如此。JavaScript 属于后一类。

这有点像问为什么马有长长的尾巴而没有翅膀。

编辑——查看诸如 Underscore 库或 Array 原型的“现代”附加组件,以实现“map”、“reduce”和“forEach”功能。这些允许在表达式评估上下文中进行迭代操作(当然是有代价的)。

于 2012-06-19T20:59:57.327 回答
2

我想你要找的是功能

var whatever = function(min, max) {
  for (var i = min; i < max;  ++i) {
    console.log(i);
  }
}

... 然后 ...

whatever(1, 6);

这种方法允许您将循环(或任何其他代码,甚至声明另一个函数)封装在一个变量中。

于 2012-06-19T21:03:33.160 回答
0

您的问题是 for 循环不返回值。您可以构造一个包含足够元素的数组来保存循环的所有迭代,然后在循环中分配给它:

arry[j++] = i;
于 2012-06-19T21:01:23.160 回答
0

您可以这样做,但似乎您可能想要检查匿名函数。使用匿名函数,您可以这样做:

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

接着

whatever(); //runs console.log(i) i times.
于 2012-06-19T21:11:00.947 回答