JavaScript参考手册
声明 | Statements
for
for 语句用于创建一个循环,它包含了三个可选的表达式,三个可选的表达式包围在圆括号中并由分号分隔,后跟一个在循环中执行的语句(通常是一个块语句)。
语法
for ([initialization]; [condition]; [final-expression])
statement
initialization表达式(包括赋值表达式)或变量声明。通常用于初始化计数器变量。这个表达式可以有选择地用var关键字声明新的变量。这些变量对于循环来说不是本地的,即它们与for循环所在的范围相同。这个表达式的结果被丢弃。condition在每次循环迭代之前要评估的表达式。如果此表达式的计算结果为true,statement则执行该表达式。这个条件测试是可选的。如果省略,则条件始终为真。如果表达式的计算结果为false,则执行跳到for构造之后的第一个表达式。final-expression在每次循环迭代结束时评估一个表达式。这发生在下次评估之前condition。通常用于更新或增加计数器变量。statement只要条件评估为真即执行的语句。要在循环中执行多个语句,请使用块语句({ ... })对这些语句进行分组。要在循环中执行任何语句,请使用空语句(;)。
示例
使用 for
以下例子声明了变量i并被初始赋值为0,for语句检查i的值是否小于9,如果小于9,则执行语句块内的语句,并且最后将i的值增加 1。
for (var i = 0; i < 9; i++) {
console.log(i);
// more statements
}
可选的for表达式
for语句的所有的表达式都是可选的
例如,初始化块中的表达式没有被指定:
var i = 0;
for (; i < 9; i++) {
console.log(i);
// more statements
}
像初始化块一样,条件块也是可选的。如果省略此表达式,则必须确保在循环体内跳出,以防创建死循环。
for (var i = 0;; i++) {
console.log(i);
if (i > 3) break;
// more statements
}
你当然可以忽略所有的表达式。同样的,确保使用了break语句来跳出循环并且还要修改(增加)一个变量,使得break 语句的条件在某个时候是真的。
var i = 0;
for (;;) {
if (i > 3) break;
console.log(i);
i++;
}
使用无语句的for
以下for循环计算 [final-expression] 部分中节点的偏移位置,它不需要执行一个statement或者一组blockstatement,因此使用了空语句。
function showOffsetPos(sId) {
var nLeft = 0, nTop = 0;
for (
var oItNode = document.getElementById(sId); /* initialization */
oItNode; /* condition */
nLeft += oItNode.offsetLeft, nTop += oItNode.offsetTop, oItNode = oItNode.offsetParent /* final-expression */
); /* semicolon */
console.log('Offset position of \'' + sId + '\' element:\n left: ' + nLeft + 'px;\n top: ' + nTop + 'px;');
}
/* Example call: */
showOffsetPos('content');
// Output:
// "Offset position of "content" element:
// left: 0px;
// top: 153px;"
提示:这是JavaScript中的少数几种情况,其中分号是强制性的。实际上,没有分号,循环声明之后的行将被视为语句。
规范
Specification |
Status |
Comment |
|---|---|---|
ECMAScript Latest Draft (ECMA-262)The definition of 'for statement' in that specification. |
Living Standard |
|
ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'for statement' in that specification. |
Standard |
|
ECMAScript 5.1 (ECMA-262)The definition of 'for statement' in that specification. |
Standard |
|
ECMAScript 3rd Edition (ECMA-262)The definition of 'for statement' in that specification. |
Standard |
|
ECMAScript 1st Edition (ECMA-262)The definition of 'for statement' in that specification. |
Standard |
Initial definition |
浏览器兼容性
Feature |
Chrome |
Edge |
Firefox (Gecko) |
Internet Explorer |
Opera |
Safari |
|---|---|---|---|---|---|---|
Basic support |
(Yes) |
(Yes) |
(Yes) |
(Yes) |
(Yes) |
(Yes) |
Feature |
Android |
Chrome for Android |
Edge |
Firefox Mobile (Gecko) |
IE Mobile |
Opera Mobile |
Safari Mobile |
|---|---|---|---|---|---|---|---|
Basic support |
(Yes) |
(Yes) |
(Yes) |
(Yes) |
(Yes) |
(Yes) |
(Yes) |
声明 | Statements相关
JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络
加载中,请稍侯......