es6中的let 和const

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真是牛!时间都阻挡不了它的爆发! 哈哈哈哈哈😄

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • let命令 ES6新增了 let命令,用来声明变量。它的用法类似于var,当然也只是类似,说明它还有其他不同于v...
    YeLqgd阅读 357评论 0 0
  • let 和 const 命令 let 命令 块级作用域 const 命令 顶层对象的属性 gl...
    安小明阅读 1,039评论 0 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice阅读 1,694评论 0 2
  • 现在可以在 JavaScript 中使用两种新的方式来声明变量:let 和 const。 到目前为止,在 Java...
    长梦未央阅读 553评论 0 0
  • let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...
    卞卞村长L阅读 680评论 0 0

友情链接更多精彩内容