1. 语句

JavaScript程序的执行单位为行(line),每一行就是一个语句。1+3是一个表达式
语句和表达式区别在于:前者是进行某种操作,后者是为了得到返回值
带一个分号视为语句的结束,空语句视为一个分号

  1. var a = 1+3; //这是一条语句 1+3是一个表达式 带有分号意味着这条语句的结束点

2. 变量

2.1 概念

变量是对“值”的引用。

  1. var a = 1; //声明一个变量其值为1
  2. var a; //声明一个变量 a
  3. a //若定义未赋值 则值为undefined
  4. x //未声明直接引用 则报错 x is not defined
  5. a = 'a' //JS是动态类型语言 变量类型没有限制
  6. var //等关键字在声明变量时,在第二此声明变量并赋值则覆盖之前的值

2.2 变量提示

JavaScript 引擎的工作方式时,先解析代码,获取所有被声明的变量,然后再一行一行地运行

  1. console.log(a); //undefined
  2. var a = 1;
  3. //上述代码由于变量提示的原因,并不会报错。只会输出未定义

3. 标识符

标识符指的是用来识别各种值得合法名称。常见标识符是变量名以及函数名。
JavaScript 的标识符对大小写敏感 a 和 A 是两个标识符
标识符规则,声明标识符要符合规则,不然JavaScript 引擎遇到非法的标识符,就会报错

  1. a
  2. _
  3. $
  4. π
  5. // 第一个字符,可以是任意Unicode字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)
  6. // 第二个字符及后面的字符,除了Unicode字母、美元符号和下划线可以带有数字
  7. var 中国;
  8. // 注: 中文也是合法的标识符
  9. // 注: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。

4. 注释

源码中被JavaScript引擎忽略的部分就叫做注释,它的作用是对代码进行解释

  1. // 这是单行解释
  2. /*
  3. 这是多行解释
  4. */
  5. /*
  6. 不建议在JavaScript 里使用HTML注释 <!-- -->
  7. 规则为 只有 “ --> ” 在行首才算
  8. */

5. 区块

JavaScript使用大括号,将多个相关的语句组合在一起,称为“区块”(block)
对于 var 命令来说 JavaScript的区块不构成单独的作用域(scope)

  1. {
  2. var a = 1;
  3. }
  4. a //1

6. 条件语句

JavaScript提供 if 结构和 switch 结构,完成条件判断,即只有满足预设的条件,才会执行相应的语句。

6.1 if 结构

if 结构先判断一个表达式的布尔值,然后根据布尔值的真伪,执行不同的语句

  1. if(布尔值){
  2. 语句
  3. };

6.2 if…else 结构

if 代码块后面,还可以跟一个else代码块,表示不满足条件时,所要执行的代码。

  1. if(布尔值){
  2. 语句; //布尔值为 true 执行
  3. }else{
  4. 语法; //布尔值为 false 执行
  5. }
  1. // 多个if else 嵌套
  2. if(布尔值){
  3. 语句;
  4. }else if(布尔值){
  5. 语句;
  6. }else if(布尔值){
  7. 语句
  8. }else{
  9. 语句 //等等 这种结构不太好 可以使用switch 条件结构
  10. }

6.3 switch 结构

多个if … else 连在一起使用的时候,可以转为使用更方便的switch结构

  1. switch(fruit){
  2. case "banana":
  3. // ...
  4. break;
  5. case "apple""
  6. // ...
  7. break;
  8. default:
  9. // ...
  10. }

上面代码根据变量 fruit 的值,选择执行相应的case。如果都不符合则执行 默认 default。
切记:每个case 后面需要 break 不然会一直执行下去的 而不是跳出switch 结构
注:switch 语句部分 和 case 语句部分 都可以使用表达式

  1. switch( 1+3 ){
  2. case 2+2 : fn(); break;
  3. }

6.4 三元运算符 ?:

JavaScript 还有一个三元运算符 (该运算需要三个运算子)?:也可以用来进行逻辑判断

  1. (条件)?表达式1:表达式2
  2. true ? 1 : 2 //1
  3. false ? 1 : 2 //2

7. 循环语句

循环语句用于重复执行某个操作,它有多种形式。

7.1 while 循环

while 语句包括一个循环条件和一块代码块,只要条件为真,就不断循环执行代码块

  1. while(条件)
  2. 语句;
  3. // 或者
  4. while(条件){
  5. 语句;
  6. }

7.2 for 循环

for 语句是循环命令的另一种形式,可以指定循环的起点和重点和终止条件

  1. for(初始表达式; 条件; 终止表达式)
  2. 语句
  3. // 或者
  4. for(初始表达式; 条件; 终止表达式){
  5. 语句;
  6. }
  7. for( ; ; ){
  8. 语句;
  9. } //该循环是一个无限循环
  • 初始表达式:确定循环变量的初始值,只在循环开始执行一次
  • 条件表达式:每轮循环开始时,都要执行这个条件表达式,只有值为真才进行循环
  • 终止表达式:每轮循环的最后一个操作,通常用来递增循环变量。

    7.3 do..while 循环

    do…while 循环与while循环类似,唯一的区别就是先运行一次循环体,然后判断循环条件

    1. do{
    2. 语句;
    3. }while(条件);
    4. //或者
    5. do
    6. 语句
    7. while(条件);

    这种循环结构不管条件是否为真 循环至少运行一次,这是这种结构的最大特点。
    注:while(); 分号不可少

    7.4 break 语句 和 continue 语句

    break语句 和 continue语句都具有跳转作用,可以让循环的循序发生改变
    break 语句 用于 跳出当前的循环
    continue 语句 用于终止本次循环执行 直接进入下一次循环

    1. var i = 0;
    2. while(i<100){
    3. console.log(i)
    4. i++;
    5. if(i===10){break}
    6. }
    7. // i 等于10 跳出这个循环 for 也可以用break
    8. while(i < 100){
    9. i++;
    10. if(i%2===0)continue;
    11. console.log(i)
    12. }

    7.5 标签(label)

    JavaScript语言 允许,语句的前面有标签(label),相当于定位符,用于跳转程序的任意位置格式如下:
    label:
    语句;
    注:标签可以是任意的标识符,但不能是保留字,语句的部分是任意语句
    label 通常与 break 语句和 continue语句配合使用,跳出特定的循环。 ```javascript top: for(var i=0;i<3;i++){ for(var j=0;j<3;j++){

    1. if(i===1 && j===1)break top;
    2. console.log("i = "+i+", j = "+j)

    } }

//标签也可用于代码块 top: { console.log(1) break top; console.log(‘本行不会输出’) } console.log(3)

  1. continue 语句也可以跟标签配合使用
  2. ```javascript
  3. top:
  4. for(var i=0;i<3;i++){
  5. for(var j=0;j<3;j++){
  6. if(i===1 && j===1) continue top;
  7. console.log("i = "+i+", j = "+j);
  8. }
  9. }

continue 跟 break 不一样的是。满足条件会跳出当前循环,直接进入下一轮外层循环。
如果continue 语句后面不适用标签,则只能进入下一个内层循环