es6解读1: let,const和symbol

作者: cd72c1240b33 | 来源:发表于2017-07-13 22:06 被阅读124次

    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)
    }
    

    2、声明的时候,必须赋值;
    3、const也有块作用域的概念;

    Symbol

    • Symbol的概念:用这种方式声明的数据类型,永远是独一无二的值;
    • Symbol的作用:避免属性名相同的问题
      • 注意:对象中,有用到symbol做key值的话,是取不到的;即let...of只能拿到非Symbol对象的值;
        let a1=Symbol.for('abc');
        let obj={
            [a1]:'123',
            'abc':345,
            'c':456
        };
        console.log(obj)
        for(let [key,value] of Object.entries(obj) ){
            console.log('let of',key,value)
        }
        ```
    
      + 解决办法:通过以下代码可以取到Symbol的值;Object.getOwnPropertySymbols可以拿到Symbol对象的值;
    
    
    Object.getOwnPropertySymbols(obj).forEach(function (item) {
        console.log(obj[item])
    })
    
       + 返回了所有key和value值;通过es6最增的Reflect.ownKeys(obj)
    
    
    Reflect.ownKeys(obj).forEach(function (item) {
        console.log(item,obj[item])
    });//返回了所有key和value值;
    ```

    相关文章

      网友评论

        本文标题:es6解读1: let,const和symbol

        本文链接:https://www.haomeiwen.com/subject/iwmghxtx.html