表达式与语句

表达式

  • add(1,2)
  • console.log(3)
    console.log的返回值为其本身
    console.log(3)返回值为undefined,打印3

语句

  • var a = 1

两者的区别

  • 表达式一般都有值,语句有也可能没有
  • 语句一般会改变环境(声明,赋值)
  • 上述两句话并不是绝对的

大小写敏感

var a与var A不同
object与Object不同

空格

大部分空格没有实际意义,加回车大部分时候也不影响
只有一个地方不能加回车,那就是在return后面
这样写会让系统在return后面加;返回undefined

标识符

第一个字符,可以是Unicode字母或$或_或中文
后面的字符,除了上述字符外,还可以使用数字
所有的变量名都是标识符

注释

单行://
多行:/ /

区块block

作用就是将代码包在一起,例如:

  1. {
  2. let a = 1
  3. let b = 2
  4. }

常常与if/for/while合用

if语句

语法

if(表达式){语句1}else{语句2}
{}在语句只有一句的时候可以省略,不建议这样做

  • 变态情况
    表达式里可以非常变态,如a=1 //这里的a=1是赋值,而不是表达式
    语句1里可以非常变态,如嵌套的if else
    语句2里可以非常变态,如嵌套的if else
    缩进也可以很变态,如试题常常下套
    a=1
    if(a===2)
    console.log(‘a’)
    console.log(‘a等于2’)
    这里要注意没有带{},所以if只能管到console.log(‘a’)这里为止,下面一句跟if语句无关
  • 使用最没有歧义的语法

    1. if(表达式){
    2. 语句
    3. }else if(){
    4. 语句
    5. }else{
    6. 语句
    7. }
  • 次推荐使用的写法,多用于函数

    1. function fn(){
    2. if(表达式){
    3. return 表达式
    4. }
    5. if(表达式){
    6. renrurn 表达式
    7. }
    8. return 表达式
    9. }

    switch语句

语法

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

break

  • 大部分时候,省略break会导致整个语句错误
  • 少部分时候,可以利用break写语句

问号冒号表达式

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

当表达式1为真时,执行表达式2;当表达式1为假时,执行表达式3

&&短路逻辑

A&&B&&C&&D 取第一个假值或D,并不会取true/false

||短路逻辑

A||B||C||D 取第一个真值或D,并不会取true/false

while循环

语法

while(表达式){语句}

  • 判断表达式的真假
  • 当表达式为真,执行语句,执行完在判断表达式的真假
  • 当表达式为假,执行后面的语句

其他还有do…while,不常使用

for循环

语法

  1. for(语句1;表达式2;语句3){
  2. 循环体
  3. }
  • 先执行语句1
  • 然后判断表达式2
  • 如果为真,执行循环体,然后执行语句3
  • 如果为假,直接退出循环,执行后面的语句

break和continue

  • break:退出当前所有循环(退出最近的循环)
  • continue:退出当前一次循环

label语句

可使用一个标签来唯一标记一个循环,然后使用 breakcontinue 语句来指示程序是否中断循环或继续执行。

语法

  1. foo:{
  2. console.log(1);
  3. break foo;
  4. console.log('本行不会输出');
  5. }
  6. console.log(2);

结果为打印1,2

试题

  1. {
  2. foo:1
  3. }

如上所述是什么?

  • 有一个代码块,里面有一个标签foo,标签foo里面的值为一