表达式与语句

表达式

  • 1+2 表达式的值为 3
  • add (1,2) 表达式的值为函数的返回值(只有函数有返回值)
  • console.log 表达式的值为函数本身

image.png

  • console.log (3) 表达式的值为多少?

打印的是3,值是undefined
image.png

语句

var a = 1 是一个语句

二者的区别

  • 表达式一般都有值,语句可能有也可能没有
  • 语句一般会改变环境(声明、赋值)

上面两句话并不是绝对的

大小写敏感(不要写错)

var a 和 var A 是不同的
object 和 Object 是不同的
function 和 Function 是不同的

空格

大部分空格没有实际意义
var a = 1var a=1 没有区别
加回车大部分时候也不影响
只有一个地方不能加回车,那就是 return 后面(面试喜欢考)
image.png

标识符

规则

第一个字符,可以是 Unicode 字母或$或_或中文
后面的字符,除了上面所说,还可以有数字
image.png
后面的字符,除了上面所说,还可以有数字

变量名是标识符

  • var _ = 1
  • var $ = 2
  • var __ = 6
  • var 你好 = ‘hi’

    注释

    好的注释

  • 多写踩坑注释

  • 为什么代码会写的这么奇怪,遇到什么bug

    不好的注释

  • 把代码翻译成中文

  • 过时的注释
  • 发泄不满的注释

    区块block

    把代码包在一起

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

    if语句

    语法

  • If(表达式){语句 1} else {语句 2}

  • {}在语句只有一句的时候可以省略,不建议这样做

    变态情况

  • 表达式里可以非常变态,如 a=1

  • 语句 1 里可以非常变态,如嵌套的 if else
  • 语句 2 里可以非常变态,如嵌套的 if else
  • 缩进也可以很变态,如面试题常常下套

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

    如果省略 { } ,if 只会管到第一句,也就是相当于

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

    最终输出
    image.png
    还有一个坑:
    image.png

    推荐写法

    image.png

    switch语句(不推荐使用)

    语法

    image.png

    break的坑

  • 大部分时候,省略 break 你就完了

  • 少部分时候,可以利用 break

    问号冒号表达式/三元表达式

    语法

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

    &&

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

    ||

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

while循环

语法

  • While(表达式){语句}
  • 判断表达式的真假
  • 当表达式为真,执行语句,执行完再判断表达式的真假
  • 执行完再次判断表达式的真假

    变态题

    一下题目中为死循环,a永远不能等于1
    跟js的浮点数有关
    image.png

for循环

for 是 while 循环的方便写法
image.png

语法

image.png

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

    变态题

  5. 下面语句执行完之后,i 为多少

    image.png
    i = 5

  6. 下面语句的输出

image.png
setTimeout 表示过一会执行,看如下输出结果
image.png

但是如果用let,结果仍然是0,1,2,3,4
image.png

break 和 continue

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

label 语句

语法

image.png

用的很少,面试问到的概率5%

  1. {
  2. foo: 1
  3. }

问:上面的东西是什么?
答:foo是一个label,语句是1