Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript for循环的语法有多严格_Javascript_Loops - Fatal编程技术网

Javascript for循环的语法有多严格

Javascript for循环的语法有多严格,javascript,loops,Javascript,Loops,所以我在编码方面有相当丰富的经验。我已经涉足了基本的、HTML、JavaScript、C和C++,虽然最近我使用的是HTML和JavaScript。 我对for循环非常熟悉。我已经多次使用它来循环数组,操作递归函数,等等。我知道它做什么以及如何使用它,但我的问题是它是如何工作的 前提 在大多数语言中,for循环的基本语法如下: var upperLimit = 10; for(var i = 0; i < upperLimit; i++) { /*Code to be execu

所以我在编码方面有相当丰富的经验。我已经涉足了基本的、HTML、JavaScript、C和C++,虽然最近我使用的是HTML和JavaScript。 我对for循环非常熟悉。我已经多次使用它来循环数组,操作递归函数,等等。我知道它做什么以及如何使用它,但我的问题是它是如何工作的

前提
在大多数语言中,for循环的基本语法如下:

var upperLimit = 10;

for(var i = 0; i < upperLimit; i++) {
    /*Code to be executed*/
    console.log(i);
}
for(initialization; condition; iteration) {
    /*Code to be executed*/
}
它的运行完全符合我的预期:它在控制台中以降序输出numbers数组的每个成员,之后留下一个空numbers数组,并使用基本上为空的for循环完成

结束 那么我的假设正确吗?如果是这样的话,除了我在这个问题顶部写的格式(可能更接近第二种格式)之外,使用for循环还有什么实际应用吗?

  • 初始化变量的范围不限于循环,它对整个函数有效(在该行之前未定义)。可以使用逗号初始化多个变量<代码>用于(变量i=0,j=1;i<10;i++)
  • 第二部分,任何计算为真实值的内容都将导致循环继续进行:
    • 真理:1,-1,对,“某物”{a:2}
    • false:0,false,null,未定义
    • 您可以忽略这一点,并依赖于代码中的中断
  • 第三部分只是让您更新循环变量,您可以省略它并在for循环体中执行
这提供了一种很好的非标准循环方式,并附带了警告,请参见链接

var list = [{a:1,b:2}, {a:3,b:5}, {a:8,b:2}, {a:4,b:1}, {a:0,b:8}];

for (var i=0, item; item = list[i]; i++) {
  // Look no need to do list[i] in the body of the loop
  console.log("Looping: index ", i, "item" + item);
}

在大多数语言中,for循环的基本语法如下:

var upperLimit = 10;

for(var i = 0; i < upperLimit; i++) {
    /*Code to be executed*/
    console.log(i);
}
for(initialization; condition; iteration) {
    /*Code to be executed*/
}
这三个表达式都是常用表达式,您可以在此处使用任何有效表达式:

for(
  var i=arr.length, othercond=true; 
  i; 
  othercond?i--:i++, console.log(i),updateothercond()
);

首先,给出一个数组

var numbers = [0,1,2,3,4,5,6,7,8,9];
以下代码是正确的for循环

for(var i = 0;
    numbers.length;
    console.log(numbers.pop())) {}
像这样定义的Javascript

for ([initialization]; [condition]; [final-expression])
   statement
对于您来说,代码初始化为“VARI=0”,并在循环开始时执行一次

条件为“number.length”,值为10。当数字不是0时,Javascript会将其转换为布尔值true。所以情况是真的

最后一个表达式是“console.log(numbers.pop())”。执行'numbers.pop()'时,numbers.length更改为9。但这仍然是事实

第二次,条件将再次返回true。最后一个表达式也是execute


在numbers.length变为0之前,Javascript将其转换为布尔值false。循环将结束。

第三部分不是增量,而是在每个循环结束时运行的指令,因此基本上,只要它是一条指令(就像您在示例中所做的那样),您就可以在此处放置所需的任何内容。顺便说一句,这在许多其他语言中也可以使用。如果你想了解它是如何工作的,我建议你学习一些编译基础知识;要使用的变量、条件、说明您的假设看起来基本正确,但有一个很好的理由不做类似于非标准循环的事情:不清楚您在做什么,或者为什么。顺便说一句,您可以在第一部分中放入多个变量(
for(var a=0,b={},c=[1,2];…
),它的作用域仅限于循环——错误(在JavaScript中)。为什么不直接读取?