1 表达式与语句

1.1 表达式

表达式 ( epression ) , 指一个为了得到返回值的计算式. 举例: 1+2, a+3.14, 这两个都是表达式.

  • add(1,2)表达式的值为函数的返回值. 注意: 只有函数有返回值.
  • console.log表达式的值为函数本身.
  • console.log(3)的值是”undefined”, 打印出来的是”3”.

    1.2 语句

    语句(statement), 是为了完成某种任务而进行的操作, 一般情况下不需要返回值.

  • 语句以分号( ; )结尾, 一个分号表示一个语句结束.

  • 逗号( , )则表示语句停顿、未结束.

举例: var a =1 是一个语句.

1.3 表达式和语句的区别

  • 表达式一般都有值, 语句可能有也可能没有.
  • 语句一般会改变环境(声明、赋值).
  • 以上区别不是绝对的.

    1.4 return后面不能加空格

2 标识符

标识符 (identifier), 指的是用来识别各种值的合法名称. 最常见的标识符是变量名、函数名。

2.1 标识符命名规则

第一个字符:

  • Unicode 字母 (包括英文字母和其他语言的字母);
  • 美元符号 $ ;
  • 下划线 _ (下划线长度最好不要超过两个) ;
  • 中文.

第二个字符和后面的字符:

  • 除了 Unicode 字母、美元符号、下划线、中文, 还可以用数字0-9.

举例:
var =1
var $ =8
var __
=6
var 雷吼 = “hello”

2.2 标识符对大小写敏感

JavaScript 语言的标识符对大小写敏感.
所以a和A, object和Object, function和Function, 都是两个不同的标识符.

3 注释

好的注释是

  • 关于踩坑的注释;
  • 关于代码写得很奇怪的原因, 遇到什么bug.

4 条件语句

JS条件语句有if语句, if…else语句, switch语句.

4.1 if 语句

意思: 如果…那么…
语法:

  1. if (表达式) {
  2. 语句;
  3. }
  4. //当表达式为true, 执行语句; 当表达式为false, 不执行语句, 即跳过紧跟在表达式后面的语句.
  5. //{ } 在语句只有一句的时候可以省略.
  • 例子1:

    1. a = 1
    2. if (a === 2)
    3. console.log('a')
    4. console.log('a等于2')

    这四行的打印结果是”a等于2”.因为这四行实际上是

    1. a = 1
    2. if (a === 2) {
    3. console.log("a");
    4. }
    5. console.log("a等于2")
  • 例子2-3:

image.png
注意: 逗号表示一个语句没有结束. 分号表示一个语句结束了.

4.2 if…else 语句

意思: 如果…那么…否则…
语法:

  1. if (表达式) {
  2. 语句1;
  3. } else {
  4. 语句2;
  5. }

对同一个变量进行多次判断时, 多个if…else语句可以连写在一起, 比如:

  1. if (m ===0) {
  2. 语句1;
  3. } else if (m ===1) {
  4. 语句2;
  5. } elss if (m===2) {
  6. 语句3:
  7. } else {
  8. 语句4;
  9. }

4.3 switch 语句

多个if…else连在一起使用的时候,可以使用更方便的switch语句代替。
语法:

  1. switch (整形表达式) {
  2. case 1: 语句1; break;
  3. case 2: 语句2; break;
  4. case 3: 语句3; break;
  5. ...多个case语句
  6. default: 以上值都不满足时, 执行此语句; break; //最后一个break可以省略.
  7. }

5 三元运算符

语法:

  1. 表达式1?表达式2:表达式3

意思: 如果表达式1为true, 那么结果采用表达式2; 如果表达式1为false, 那么结果采用表达式3.
三元运算符语句可用于代替最简单的if..else语句.

6 短路运算符&&、||

6.1 短路与 &&

语法: 表达式1 && 表达式2 && 表达式3 && 表达式4
规则: 取第一个false值或最后一个值. 并不会取值”true”/ “false”.

6.2 短路或 ||

语法: 表达式1 || 表达式2 || 表达式3 || 表达式4
规则: 取第一个true值或最后一个值. 并不会取值”true”/ “false”.

7 循环语句

循环语句包括while循环, for循环, do…while循环, break语句和continue语句, 标签(label).

7.1 while 循环

语法:

  1. while (表达式) {
  2. 语句
  3. }

运行规则:

  1. 先判断表达式的真假;
  2. 若表达式为true, 执行语句, 执行完, 再重新判断表达式的真假;
  3. 若表达式为false, 则跳过循环的语句.
  4. 注意: 代码块部分, 如果只有一条语句, 可以省略大括号{ }, 否则就必须加上大括号.
  • 例子1:

下面这个是死循环. 原因: 浮点数造成的不精确.
image.png
while循环语句, 包括初始化、判断、循环体、增长四个部分, 如果缺少其中一个部分, 就会导致死循环.

  • 例子2:

setTimeout, 作用是过一段时间之后执行操作.
在循环结束之后, i 的值是5, 且打印了五次5.
打印了五次5, 是因为setTimeout在这里是异步执行.
image.png

这里把var改为let, 则可以让console.log(i)的i不会异步执行.
image.png

7.2 do while 循环

语法: do { 语句 } while (表达式);
用得较少.

7.3 for 循环

语法:

  1. for (初始化语句; 表达式; 循环后操作语句) {
  2. 循环体
  3. }

特点:

  1. 初始化语句: 只在循环开始时执行一次, 一般是定义一个变量, 并赋值.
  2. 表达式: 表达式为false时, 循环终止; true, 才执行循环体.
  3. 循环后操作语句: 循环体执行后调用该语句, 一般是变量的递增或递减操作.

执行顺序:

  1. I 初始化语句 > II表达式;
  2. 若为false, 跳过循环体;
  3. 若为true, III 执行循环体;
  4. IV 循环后操作语句 > II表达式.

7.4 break 语句和 continue

break语句和continue语句都具有跳转作用, 可以让代码不按既有的顺序执行.
break语句作用: 结束当前所在的循环.
continue语句作用: 跳过当前这一次循环, 返回循环结构的头部,开始下一轮循环.

7.5 标签

语法: { label : 语句 }
作用: 用于跳转到程序任意位置.
举例: { foo: 1}
这个不是对象. foo是标签, 这个标签的语句是1.