ES2015 let const的用法

传统的var

先看一下下面的代码:

function judge(bool) {
    if (bool) {
        var foo = 'bar';

        console.log(foo);
    } else {
        console.log(foo);
    }
}

judge(false);

//输出undefined

如果参照其它语言,就会觉得很奇怪,为什么不是抛出Uncaught ReferenceError的异常。
这其实是变量提升的问题,相当于在解析时将foo提升到函数的一开始,即相当于以下形式:

function judge(bool) {
    var foo;
    if (bool) {
        foo = 'bar';

        console.log(foo);
    } else {
        console.log(foo);
    }
}

judge(false);

块级作用域的let

块级作用域就不用多说,就是用let定义的变量只在定义它的块中有效,出了这个块你就不能访问到它了。

示例:

function judge(bool) {
    if (bool) {
        let foo = 'bar';

        console.log(foo);
    } else {
        console.log(foo);
    }
}

judge(false);

//抛出Uncaught ReferenceError的异常

ES2015中的常量const

ES2015中常量的实现和一般意义上的常量有一定区别,它虽然是不能对常量进行重新定义,但还是能够修改常量的值的。

示例:

const person = ['jack', 'nike'];

person.push('jobs')

console.log(person);

//输出["jack", "nike", "jobs"]

使用场景

风格一:
1、默认使用let
2、变量定义后不再改变使用const
3、在顶级可以var(一般不用)

风格二:
1、默认使用const
2、需要改变变量值时使用let
3、不使用var

个人可以根据自己喜好,选择某一种风格使用即可。

你可能感兴趣的:(ES2015 let const的用法)