表达式语句(expression statement):把表达式当做语句的用法;
声明语句(declaration statement):用来声明新变量或定义新函数;
-
控制结构(control structure):改变语句的默认执行顺序:
条件(conditional)语句;
循环(loop)语句;
跳转(jump)语句;
1 表达式语句
赋值语句、delete运算符、函数调用等
2 复合语句和空语句
复合语句
-
复合语句(compound statement):将多条语句联合在一起,当成一条单独的语句;
语句块的结尾不需要分号;
语句块中的行要缩进整齐(为了可读性);
当希望多条语句被当成一条语句使用时,就应该使用复合语句
{
var x = Math.PI;
console.log(x);
}
空语句
-
空语句(empty statement):允许包含0条语句的语句:
如果有特殊目的需要用到空语句,那么在代码中添加注释:
var arr = [1,2,3];
for (var i = 0; i < arr.length; i++) /* empty */ ; //空语句
3 声明语句
3.1 var
语法:var name_1 [ = value_1 ] [,..., name_n [ = value_n ]]
3.2 function
语法:
function funcname ([arg1 [, arg2 [..., argn]]]) {
statements
}
4 条件语句
4.1 if
语法:
if (condition) {
// statement
}
语法:
if (condition) {
// statement
} else {
// statement
}
4.2 else-if
语法:
if (condition) {
// statement
} else if (condition) {
} else if (condition) {
} else {
}
4.3 switch
语法:
switch (expression) {
case label_1:
// statements_1
break;
default:
// statements_def
break;
}
case匹配操作实际上是恒等运算符的比较
5 循环
5.1 while
语法:
while (condition) {
// statement
}
5.2 do-while
语法:
do{
// statement
} while (condition);
5.3 for
关键点在于初始化、检测和更新
语法:
for (initialize; test; increment) {
statement
};
//相当于如下的while循环:
initialize;
while (test) {
statement
increment;
}
//死循环:
while(true);
for(;;);
5.4 for-in
用来遍历对象属性;
语法:
for (variable in object) {
// statement
}
//将所有对象属性复制到一个数组中
var o = {
x: 1,
y: 2,
z: 3
};
var a = [],
i = 0;
for (a[i++] in o);
console.log(a.toString()); //x,y,z
6 跳转
6.1 标签语句
语法:identifier: statement
var arr = [1,2,3];
mainloop: for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
if (arr[i] === 2) {
break mainloop; //当arr[i]为2时结束循环
}
};
6.2 break语句
语法:break;
或break labelname;
var arr = [1,2,3];
for (var i = 0; i < arr.length; i++) {
if (arr[i] === 2) {
console.log(arr[i]);
break;
}
};
通过break来跳出非就近的循环体或者switch语句时,就会用到带标签的break语句
6.3 continue语句
语法:continue;
或continue labelname;
6.4 return语句
语法:return expression;
6.5 throw语句
语法:throw expression;
var x = 2;
if (x !== 3) {
throw new Error("no access."); //Uncaught Error: no access.
}
6.6 try/catch/finally语句
语法:
try {
// statements
} catch(e) {
// statements
console.log(e);
}
try {
// statements
} catch(e) {
// statements
console.log(e);
} finally {
// statements
}
try {
throw new Error("hello");
} catch(e) {
console.log(e.message); //"hello"
} finally {
console.log("finally run"); //finally run
}
7 其他语句类型
with、debugger、use strict
7.1 with语句
用于临时扩展作用域链
严格模式下禁止
7.2 debugger语句
ECMAScript 5正式加入debugger,作用是产生一个断点
7.3 use strict
语法:"use strict"