一、表达式和语句

  • 表达式
  1. 1+2表达式的值是3
  2. add(1,2)表达式的值是函数的返回值,函数的返回值就是函数的值
  3. console.log表达式的值是函数本身
  4. console.log(3)表达式的值是undefined,因为它返回的是undefined,打印出来的是3
  • 语句
  1. var a=1;是一个语句,值是undefined
  • 二者的区别
  1. 表达式一般都有值,语句可能有也可能没有
  2. 语句一般会改变环境,(声明、赋值)
  3. 上面两句话并不是绝对的

二、标识符的规则

规则:第一个字符,可以是Unicode字母 或者 $ 或者 _ 或者中文
后面的字符,可以有数字
举例:

  1. var _ = 1
  2. var $ = 2
  3. var ______ = 6 //这种写法不规范,下划线最多两个,不然看不清有几个
  4. var 你好 = 'hi'

三、if…else语句

语法:

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

变态情况:

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

结果是:a等于2,因为不屑花括号最多只管一行

规则:使用最没有歧义的写法

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

四、while语句

语法:

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

流程:
1.判断表达式真假
2.表达式为真,执行语句,执行完再判断表达式真假
3.当表达式为假,执行后面的语句

五、for循环

语法:

  1. for(语句1;表达式2;语句3){
  2. 循环体
  3. }

流程:
1.先执行语句1
2.判断表达式2
3.如果为真,执行循环体,然后执行语句3
4.如果为假,直接退出循环,执行后面的语句

变态情况:

  1. for(var i=0;i<5;i++){
  2. setTimeout(()=>{
  3. console.log(i)
  4. },0)
  5. }
  6. 请问输出结果是什么?

循环体内的setTimeout会在for执行完成之后执行,所以是输出5(5个)

六、break和continue

break:退出所有循环
continue:退出当前一次循环

七、label

语句标记

变态情况:

  1. {
  2. foo:1
  3. }
  4. 上面是什么东西?

是个标签,内容是1