美文网首页
es6中的let 和const

es6中的let 和const

作者: sdcV | 来源:发表于2017-07-27 21:46 被阅读21次
    let块级作用域
    var name = 'zach' //ES3写法
    
    while (true) {
        var name = 'obama'
        console.log(name)  //obama
        break
    }
    console.log(name)  //obama
    

    只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。
    看一下es6

    let name = 'zach'
    
    while (true) {
        let name = 'obama'
        console.log(name)  //obama
        break
    }
    
    console.log(name)  //zach
    

    let则实际上为JavaScript新增了块级作用域。用它所声明的变量,只在let命令所在的代码块内有效。

    另外一个var带来的不合理场景就是用来计数的循环变量泄露为全局变量,看下面的例子:
    var a = [];
    for (var i = 0; i < 10; i++) {
        a[i] = function () {
            console.log(i);
        };
    }
    a[6](); // 10
    
    for (let i = 0; i < 10; i++) { //避免了上述问题
        a[i] = function () {
            console.log(i);
        };
    }
    a[6](); // 6
    
    二、const

    const也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变。

     const PI = Math.PI
    
    PI = 23 //Module build failed: SyntaxError: /es6/app.js: "PI" is read-only
    

    const有一个很好的应用场景,就是当我们引用第三方库的时声明的变量,用const来声明可以避免未来不小心重命名而导致出现bug:例如:

      const monent = require('moment')
    

    es6还有很多精彩之处,接下来还会陆续介绍。es8也已经发布了,js真是牛!时间都阻挡不了它的爆发! 哈哈哈哈哈😄

    相关文章

      网友评论

          本文标题:es6中的let 和const

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