2021-01-05

let和const

使用let ,那么设置循环的是一个作用域,循环体内部是单独的作用域

  1. 变量提升
  2. 暂时性死区:在代码块内,使用let声明该变量之前,变量不可用
  3. 暂时死去使得typeof不再安全,如果一个变量没有声明,返回undefined在这里插入图片描述
    let x=x暂时死去

为什么需要块及作用域

在这里插入图片描述

块及作用域和函数声明-待阅读

const表示指的内存地址保存的数据不可以改动
es5声明的方法,var和function,es6新加let

每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突
对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型
Symbol函数前不能使用new命令,否则会报错。这是因为生成的 Symbol 是一个原始类型的值,不是对象

s1 // Symbol(foo)
s2 // Symbol(bar)

s1.toString() // "Symbol(foo)"
s2.toString() // "Symbol(bar)"

如果 Symbol 的参数是一个对象,就会调用该对象的toString方法,将其转为字符串,然后才生成一个 Symbol 值

class MyClass {
    
    
  [Symbol.hasInstance](foo) {
    
    
    return foo instanceof Array;
  }
}

[1, 2, 3] instanceof new MyClass() // true

猜你喜欢

转载自blog.csdn.net/weixin_43124546/article/details/112209496