概述
-
let声明的变量只在它所在的代码块中有效(for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。)
只要块局作用域内存在let命令,它所声明的变量就绑定了这个区域,不再受外部影响。
let注意点1. let不能再一个函数中重复声明 2. 立即执行函数写法 // IIFE 写法 (function () { var tmp = ...; ... }()); // 块级作用域写法 { let tmp = ...; ... } 3. es6的块级作用域必须有大括号,否则就会认为不存在块级作用域。 4. es6的引入明确允许在块级作用域中声明函数。
在es5中函数的声明会提升到块级作用域的头部,会连方法整个提升。在es6中会像var一样提升到作用域头部,然后赋值为undefined。
-
const注意事项:const定义的值不允许改变,(数组、字符串、布尔值)所指向的内存中的值不允许改变,但是数组和对象是指向的指针不允许改变,但是内部结构是可以改变的。
使用var和function声明的全局变量会成为顶层对象的属性,可以通过window来获取到,这也是js最大的败笔。为了优化这一缺陷,es6通过的let、const、class命名的全局变量不属于顶层对象的属性。
var a = 1; // 如果在 Node 的 REPL 环境,可以写成 global.a // 或者采用通用方法,写成 this.a window.a // 1 let b = 1; window.b // undefined
全局环境中,this会返回顶层对象。但是,Node 模块和 ES6 模块中,this返回的是当前模块。
最后
以上就是聪慧服饰为你收集整理的ES6----let和const的全部内容,希望文章能够帮你解决ES6----let和const所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复