语句块
while (x < 10) {
x++;
}
/*
{x++;}
就是一个语句块
*/
注意:ECMAScript2015之前的JavaScript,没有块范围的变量;在ECMAScript2015之后,由 let const 定义的变量才是块范围。
var x = 1;
{
var x = 2;
}
console.log(x); // outputs 2
/*
花括号中定义的 var x
同花括号上方定义的 var x
处于相同的块范围中,可以尝试修改 var 为 let 试一试
*/
let x = 1;
{
let x = 2;
}
console.log(x);
/*
会出现异常
因为,名称为 x 的变量,在上方已经定义了,
不能重复定义,使用相同名称的变量。
*/
条件语句
if ... else 语句
if (condition) {
statement_1; // 条件判断为真,执行
} else {
statement_2; // 条件判断为假,执行
}
if (condition_1) {
statement_1;
} else if (condition_2) {
statement_2;
} else if (condition_n) {
statement_n;
} else {
statement_last;
}
if (condition) {
statement_1_runs_if_condition_is_true;
statement_2_runs_if_condition_is_true;
} else {
statement_3_runs_if_condition_is_false;
statement_4_runs_if_condition_is_false;
}
评估为假值的值:
- false
- undefined
- null
- 0
- 空白字符串 ("")
- 除此以为的值,在条件判断中,会被评估为真
var b = new Boolean(false);
if (b) // 条件结果为:真
if (b == true) // 条件结果为:假
switch 语句
switch (expression) {
case label_1:
statements_1
[break;] // 可选
/*
若该case标签,被匹配了,但其中没有break,
那么就会顺序执行下一个case标签的判断,而不会跳出switch语句;
若有break,该处case标签执行完成之后,会跳出switch语句。
*/
case label_2:
statements_2
[break;]