快捷搜索:  汽车  科技

es6初学者入门教程(let命令的基本用法)

es6初学者入门教程(let命令的基本用法)x2用var定义在块内,其它和定义在块外是一样的,输出时,块内和块外均能正常输出。x1用let定义在块内,在块内输出正常,在块外提示“x1未定义”,并且其后面的命令不会再执行。这是因为x1用let定义后,其作用域仅限在块内,在块外无法访问,保定了其安全性,不至于造成变量泄露。图2 用浏览器通过F12调出控制后显示的结果在上面的a.html中,有三个变量x0 x1 x2,其中x0用let定义在块外,x1和x2分别用let和var定义在块内。然后我们在块内与块外,分别在控制台输入这三个变量。就出现了图2的结果。x0用let定义在块外,那么在块内和块外输出正常,并且都一样,变得像var了。

上一次,我们讲解了《前端开发:ES6 与 ECMAScript 2015 的关系》 这一节,我们开始进入ES6的详解,首先我要说明一下,在ES6之前,还有ES5,我们的ES6教程系列,主要是针对,ES6新增的命令进行讲解。若想索取编辑软件和源码,请关注我后,私信我索取软件或源码,其它课程请持续关注本号。

ES6新增了let命令,这个命令和var一样,都是用来声明变量的。只不过,let命令一般只用在{}中,也就是说let命令一般用在代码块中,如果let用在代码块外,那么就和var一样了。

直接上例子:

es6初学者入门教程(let命令的基本用法)(1)

图1 示例文件 a.html

es6初学者入门教程(let命令的基本用法)(2)

图2 用浏览器通过F12调出控制后显示的结果

在上面的a.html中,有三个变量x0 x1 x2,其中x0用let定义在块外,x1和x2分别用let和var定义在块内。然后我们在块内与块外,分别在控制台输入这三个变量。就出现了图2的结果。

x0用let定义在块外,那么在块内和块外输出正常,并且都一样,变得像var了。

x1用let定义在块内,在块内输出正常,在块外提示“x1未定义”,并且其后面的命令不会再执行。这是因为x1用let定义后,其作用域仅限在块内,在块外无法访问,保定了其安全性,不至于造成变量泄露。

x2用var定义在块内,其它和定义在块外是一样的,输出时,块内和块外均能正常输出。

我们下面两个应用的例子:

es6初学者入门教程(let命令的基本用法)(3)

图3 FOR循环中用var定义i,在循环外输出i,结果是 10

es6初学者入门教程(let命令的基本用法)(4)

图4 FOR循环中用let定义i,在循环外输出i,结果是报错显示“i未定义”

这说明如果循环中,用let定义变量i,则i的作用域仅在循环内。

好了,我们再看最后一个例子:

es6初学者入门教程(let命令的基本用法)(5)

我们期望得到 6 ,但是输出结果是10

es6初学者入门教程(let命令的基本用法)(6)

这样一改,就得到了我们期望的6

上面代码中,变量i是var声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的function在运行时,会通过闭包读到这同一个变量i,导致最后输出的是最后一轮的i的值,也就是10。

所以说 let命令的出现,也是为解决闭包的问题提供了一个方案。

后面课程更精彩,请大家持续关注。

猜您喜欢: