JavaScript 基本语法

102 阅读4分钟

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