ES5中只有全局作用域和函数作用域,这样带来了很多的不便利,会出现内层变量被外层变量覆盖,循环体中的变量会暴露在全局,很多情况下需要自执行函数来私有化变量。
ES6中let为JavaScript提供了块级的作用域
虽然添加了块级的作用域但是变量仍然会按照作用域链进行查找
函数能不能在块级作用域之中声明?这是一个相当令人混淆的问题。
ES5中规定 函数只能顶层作用域和函数作用域中声明,但是实际上各个浏览器并没有按照这个规范来实行
ES6中规定块级作用域,并且明确的规定了函数可以在块级作用域中声明。
ES5 只有两种声明变量的方法:var命令和function命令。ES6 除了添加let和const命令,后面章节还会提到,另外两种声明变量的方法:import命令和class命令。所以,ES6 一共有 6 种声明变量的方法。
原文:https://www.cnblogs.com/Paul-Yellow/p/10411272.html