表达式和语句

表达式:

表达式(expression),指一个为了得到返回值的计算式。凡是 JavaScript 语言中预期为值的地方,都可以使用表达式。比如,赋值语句的等号右边,预期是一个值,因此可以放置各种表达式。表达式不需要分号结尾,一旦在表达式后面添加分号,则 JavaScript 引擎就将表达式视为语句,这样会产生一些没有任何意义的语句。

  1. //表达式举例
  2. 1 + 2 //表达式的值为3
  3. add(1,2) //表达式的值为函数的返回值
  4. console.log //表达式的值为函数本身
  5. console.log(3) //表达式的值为undefined

语句:

语句(statement)是为了完成某种任务而进行的操作。语句以分号结尾,一个分号就表示一个语句结束。多个语句可以写在一行内。语句和表达式的区别在于,语句主要为了进行某种操作,一般情况下不需要返回值;表达式则是为了得到返回值,一定会返回一个值。

  1. //语句举例
  2. var a = 1 + 3; //赋值语句
  3. var a = 1 + 3 ; var b = 'abc'; //多个语句写在一行
  4. ;;; //空语句
  5. 1 + 3; //没有意义的语句

标识符的规则

标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名,以及后面要提到的函数名。

大小写敏感

  • var a 和 var A 是不同的

    命名规则:

  • 第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线_。

  • 第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9。

    中文是合法的标识符,可以用作变量名

  • var 你好 = “hi”

    JavaScript 有一些保留字,不能用作标识符

    1. argumentsbreakcasecatchclassconstcontinuedebuggerdefaultdeletedoelseenumevalexportextendsfalsefinallyforfunctionifimplementsimportininstanceofinterfaceletnewnullpackageprivateprotectedpublicreturnstaticsuperswitchthisthrowtruetrytypeofvarvoidwhilewithyield

if else 语句

语法

  • if (表达式){语句} else {语句2}
  • {} 在语句只有一句时可以省略,但是依据程序员戒律:使用最没有歧义的写法,不建议省略

    多个if…else语句可以连写

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

    变态情况

  • if语句里面表达式写成a=1赋值语句,则表达式一直成立

  • 如果不写{},if只管到后面第一个语句,而else代码块总是与离自己最近的那个if语句配对
    1. a = 1;
    2. if (a === 2)
    3. console.log('a');
    4. console.log('a等于2')
    5. //以上输出为 a等于2

while语句

语法

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

    1. while (条件) {
    2. 语句;
    3. }
  • while语句包含变量初始化,条件判断,循环体,变量变化。四部分缺一不可,缺少任一部分都会导致while语句失去意义

    1. var i = 0; //变量初始化
    2. while (i < 100) { //条件判断
    3. console.log('i 当前为:' + i); //循环体
    4. i = i + 1; //变量变化
    5. }

    考点

    1. var a = 0.1;
    2. while ( a !== 1) {
    3. console.log(a);
    4. a = a + 0.1
    5. }
    6. //死循环,直觉上10个0.1相加应该等于1, 但是js中浮点数相加值不能准确表示,所以a永远不等于1

for语句

语法

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

    1. for (初始化表达式; 条件; 递增表达式) {
    2. 语句
    3. }
  • for语句的三个部分(initialize、test、increment),可以省略任何一个,也可以全部省略。

    1. for ( ; ; ){
    2. console.log('Hello World');
    3. }

    考点

    1. for (var i = 0, i < 5, i++) {
    2. setTimeout( () => {
    3. console.log(i);
    4. }, 0);
    5. }
    6. // 结果将打印5个5,setTimeout(回调函数)过一会执行函数,但是先得把for循环执行完
    7. // 把var改成let后,打印 0,1,2,3,4

break和continue

break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。

break

  • break语句用于跳出代码块或循环。

    1. var i = 0;
    2. while(i < 100) {
    3. console.log('i 当前为:' + i);
    4. i++;
    5. if (i === 10) break;
    6. }
    7. // 上面代码只会执行10次循环,一旦i等于10,就会跳出循环。
  • 如果有两层循环,break只会退出它所在的这层循环。

    continue

  • continue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。

    1. var i = 0;
    2. while (i < 100){
    3. i++;
    4. if (i % 2 === 0) continue;
    5. console.log('i 当前为:' + i);
    6. }
    7. // 上面代码只有在i为奇数时,才会输出i的值。如果i为偶数,则直接进入下一轮循环。

label

语法

  • JavaScript 语言允许,语句的前面有标签(label),相当于定位符,用于跳转到程序的任意位置。
    1. foo: {
    2. console.log(1);
    3. break foo;
    4. console.log('本行不会输出');
    5. }
    6. console.log(2);
    7. }
    8. // 1
    9. // 2
    10. //上面代码执行到break foo,就会跳出区块

    考点

    ```javascript { foo:1; //这个是什么? }

//foo是一个lable,语句就是1 ```

以上部分内容参考JavaScript教程