Left Handside Expression 左值表达式

左值表达式要求必须是一个[[Reference]]类型

Member Expression 成员变量表达式

访问成员变量的表达式,返回[[Reference]]类型

  1. a.b
  2. a[b]
  3. foo`stirng` // 函数的特殊调用方式,模版字符串的“标签模版”功能
  4. super.b
  5. super['b']
  6. new.target
  7. new Foo()

New Expression new表达式

  1. new a()
  2. new a()()

Call Expression call表达式

调用函数的表达式

  1. foo()
  2. super()
  3. foo()["b"]
  4. foo().b // 返回的是函数
  5. foo()`aa` // foo()返回的是函数

Others Expression 其他表达式

一元运算符

  1. delete a.b
  2. void 0 // 任何情况下返回undefined
  3. await func()
  4. typeof a // typeof null === "object"; typeof function(){} === "function"
  5. +a
  6. -a
  7. !a
  8. ~a

运算符,逻辑符

  1. +,-,*,/,%,>,<,=。。。。。。
  2. &&,|| 短路
  3. ?:三目运算, 短路

类型转换

表格

IMG_1DB14C86BD91-1.jpeg

装箱

  • Number
    • new Number(0)返回对象Number类型,可以用于类型转换
    • Number(0)返回基本number类型,可以用于类型转换
  • String
    • new Stirng("a")返回对象String类型,可以用于类型转换
    • String(0)返回基本string类型,可以用于类型转换
  • Boolean
    • new Boolean(true)返回对象Boolean类型,可以用于类型转换
    • Boolean(0)返回基本boolean类型,可以用于类型转换
  • Symbol
    • Symbol("2")没有new语法,返回Symbol对象

      拆箱

      拆箱使用方法的优先级
  1. 有自定义[Symbol.toPrimitive]使用[Symbol.toPrimitive]
  2. 无自定义[Symbol.toPrimitive]valueOf优先于toString成为默认[Symbol.toPrimitive]