es6解读1: let, const 和 smybol

let const 作用域

作用域概念

+ 全局作用域
+ 函数作用域
+ 块级作用域

如何使用let和const

  • 使用let

  1. 形成块级作用域
  2. es6下强制开启严格模式,而在es5下,需要"use strice"才能开启严格模式;
  • 使用const

  1. 声明的常量不能修改;但是对象可以修改,因为对象是对地址的引用,我们可以在内存空间中更改对象
function last(){
      const k ={
        a:1
      }
      k.a = 123;
      console.log(k) //123
}
  1. 声明的时候必须赋值
  2. const也有块级作用域概念

Symbol

  • Symbol概念:用Symbol申明的变量将是独一无二的值
  • Symbol的作用: 避免属性名相同的问题
    • 注意:对象中,有用到symbol做key值的话,是取不到的;
      即let...of只能拿到非Symbol对象的值;
let a1=Symbol.for('abc');
    let obj={
        [a1]:'123',
        'abc':345,
        'c':456
    };
    console.log(obj) //{abc: 345, c: 456, Symbol(abc): "123"}
    for(let [key,value] of Object.entries(obj) ){
        console.log('let of',key,value) //let of abc 345 let of c 456
    }
  • 解决办法:通过以下代码可以取到Symbol的值;Object.getOwnPropertySymbols可以拿到Symbol对象的值;
 Object.getOwnPropertySymbols(obj).forEach(function (item) {
        console.log(obj[item])  //123
    })
  • 返回了所有key和value值;通过es6最增的Reflect.ownKeys(obj)
Reflect.ownKeys(obj).forEach(function (item) {
        console.log(item,obj[item]) //abc 345,c 456, Symbol(abc) "123"
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容