• ES6 let 和const


    一、var 的缺陷:var 只有全局作用域和函数作用域,没有块级作用域,除了在函数内部的变量默认都属于window

            var foo='hello';
            fn=function(){
                var foo='world'
            }
            fn();
            console.log(foo);//hello
            if(true){
                var foo='bar'
            }
            console.log(foo);//bar

    二、let 定义变量:ES6新增可以定义块级作用域,但是没有变量提升,必须先声明再使用,不能重复声明,主要是解决了var没有块级作用域的缺陷

            let foo='hello';
            if(true){
                let foo='bar';
                if(true){
                    let foo='vue';
                    if(true){
                        // 也有块级作用域链
                        console.log(foo);//vue
                    }
                    console.log(foo);//vue
                }
                console.log(foo);//bar
            }
            console.log(foo);//hello

    三、const 定义常量:也是ES6新增的可以定义块级作用域,用于定义常量,常量不允许修改,并且声明的同时必须赋值,也没有变量提升,不允许重复声明,并且const比let的效率高

            const foo='hello';
            if(true){
                const foo='bar';
                if(true){
                    const foo='vue';
                    if(true){
                        // 也有块级作用域链
                        console.log(foo);//vue
                    }
                    console.log(foo);//vue
                }
                console.log(foo);//bar
            }
            console.log(foo);//hello

    四、使用建议:不要使用var,使用let和const,如果你使用的这个成员,一次都没有变过,则使用const定义,如果至少变了一次,则使用let定义。

    更多详细知识点,请参考ECMAScript 6 入门

  • 相关阅读:
    李阳疯狂英语精选365句
    线程 notify,与notifyAll 的区别
    关于Logger,Tomcat 的Logger是如何工作的
    知豆 源
    关于好多继承的问题,我们应该如何去理解
    5+1+2
    wu xing
    ALBPM Time Question
    推荐书集
    “疯狂”的定义
  • 原文地址:https://www.cnblogs.com/EricZLin/p/9366543.html
Copyright © 2020-2023  润新知