1.表达式与语句
表达式,指一个为了得到返回值的计算式
语句,是为了完成某种任务而进行的操作,比如,赋值语句
两者的区别是,语句主要是为了进行某种操作,一般情况下不需要返回值,而表达式是为了得到返回值,且一定会返回一个值。
2.标识符的规则
-
第一个字符可以是任意Unicode字母(包括英文字母和其它语言的字母),以及美元符号($)和下划线(_)
-
第二个字符及后面的字符,除了Unicode字母、美元符号、下划线,还可以是数字
-
JavaScript 有一些保留字,不能用作标识符:arguments、break、case、catch、class、const、continue、debugger、default、delete、do、else、enum、eval、export、extends、false、finally、for、function、if、implements、import、in、instanceof、interface、let、new、null、package、private、protected、public、return、static、super、switch、this、throw、true、try、typeof、var、void、while、with、yield。
3.条件判断
3.1 if ...else
根据布尔值的真假,执行不同的语句
当if下面只有一个语句时,花括号{}可以省略
if(布尔值){
语句;
}
if(布尔值)
语句;
if(布尔值) 语句;
if(布尔值){
语句; // 布尔值为true时执行
}else{
语句; // 布尔值为false时执行
}
if(条件一){
语句; // 条件一为true时执行
}else if(条件二){
语句; // 条件二为true时执行
}else if(条件三){
语句; // 条件三为true时执行
}else{
语句; // 上述条件都不满足时执行
}
3.2 switch 语句
某些情况下,使用多个if...else时,可转为switch
计算表达式的值,匹配每个case的结果,匹配上了就执行对应的语句,使用break退出执行switch。表达式的值与case结果值都不匹配时,执行default
switch(表达式){
case "结果一":
语句;
break;
case "结果二":
语句;
break;
case "结果三":
语句;
break;
default:
语句;
}
当多个case执行的语句是一样的,上面的case可以不写break,沿用最后一个case对应的语句
switch(表达式){
case "结果一":
语句;
break;
case "结果二":
case "结果三":
语句;
break;
default:
语句;
}
注意: switch中的表达式计算结果,与case结果采用严格相等(===),而不是相等(==),这意味着比较时不会发生类型转换。
3.3 三元表达式
当表达式的值为true时,执行语句一,false时执行语句二。相当于简写的if...else...
表达式?语句一:语句二;
4. 循环判断
4.1 while 语句
while 语句包括一个循环条件和循环体,只要条件为真,就一直执行循环体。
一般的执行顺序是,判断①,表达式为真,执行循环体②,如果有③就执行,改变表达式中的参数值,再执行①,为真则继续执行②③,否则退出,依此循环
while(条件表达式){ //①
循环体 //②
[改变表达式中的参数值] //③
}
4.2 for语句
for语句和while一样,只不过形式不同。
执行顺序是,先初始化值①,再判断条件表达式②,满足则执行④,完成后执行③,再②,满足执行④③,否则直接退出,依此循环
for(初始化表达式①;条件表达式②;递增表达式③){
语句④;
}
- 初始化表达式:确定循环变量的初始值,只在循环开始时执行一次。
- 条件表达式:每轮循环开始时,都要执行这个条件表达式,只有值为真,才继续进行循环。
- 递增表达式:每轮循环的最后一个操作,通常用来递增循环变量。
4.3 do...while语句
先执行循环体,再执行while中的条件,如果满足,再执行循环体,不满足,则退出,依次循环,与while和for的区别,除了在写法上,主要是不管条件是否满足,都有执行一次循环体
do{
语句;
} while(条件);
5.break 和 continue
break 退出当前语句块或者循环
continue 退出当前循环,然后继续判断条件,满足则继续下一个循环
6.label
label 相当于定位符
label:
语句
常与break、continue搭配使用,用于跳出指定的循环或语句,参考下面例子理解
foo:{
console.log('1111');
break foo;
console.log("don't print");
}
console.log('2222');
// 1111
// 2222
top:
for(var i = 0; i < 3; i++){
for(var j = 0;j < 2; j++){
if(i === 1 && j === 1) break top;
console.log('i=' + i + ', j=' + j);
}
}
//i=0, j=0
//i=0, j=1
//i=1, j=0