(js高手之路]es6系列教程- var,让,const详解

   function 显示(),flag  {   ,,,,,,,,,,,console.log (, a );   ,,,,,,,,,,,如果(,flag ) {   ,,,,,,,,,,,,,,,var  a =,“ghostwu”;   ,,,,,,,,,,,,,,,return ;   ,,,,,,,,,,,},{else    ,,,,,,,,,,,,,,,console.log (, a );   ,,,,,,,,,,,,,,,return 零;   ,,,,,,,,,,,}   ,,,,,,,}

变量提升

function 显示(,flag ) {   ,,,,,,,,,,,var ;   ,,,,,,,,,,,console.log (, a );   ,,,,,,,,,,,如果(,flag ) {   ,,,,,,,,,,,,,,,a =,“ghostwu”;   ,,,,,,,,,,,,,,,return ;   ,,,,,,,,,,,},{else    ,,,,,,,,,,,,,,,console.log (, a );   ,,,,,,,,,,,,,,,return 零;   ,,,,,,,,,,,}   ,,,,,,,}

这种机制,在项目中经常误导程序员,哪怕是资深的前端程序员,不小心也容易入坑,于是ES6引入了块级作用域来强化对变量生命周期的控制。

<>强什么是块级作用域?

1,函数内部

2块中(通常指的是一对花括号之间)

es6中使用新的关键词让来定义变量,为块级作用域,上例,如果改成让声明

function 显示(,flag ) {   ,,,,,,,,,,,console.log (, a );   ,,,,,,,,,,,如果(,flag ) {   ,,,,,,,,,,,,,,,let  a =,“ghostwu”;   ,,,,,,,,,,,,,,,return ;   ,,,,,,,,,,,}else  {   ,,,,,,,,,,,,,,,console.log (, a );   ,,,,,,,,,,,,,,,return 空;   ,,,,,,,,,,,}   ,,,,,,,}

由于我们是块级作用域,不会像var一样产生变量提升,所以,第2行和第7行这个时候报错(没有定义)

只有在国旗为真正的情况,一个会被定义,而且访问范围在第3行和第6行的大括号之间,超出这个范围,就访问不到,这就是块级作用域

<强>让都有哪些特性呢?

在同一个作用域下,让不能重复定义两个同名的标识符

在不同的作用域下,可以使用同名的标识符

1,var  a =,“ghostwu”;=2,let  a “ghostwu2”; 1,let  a =,“ghostwu”;   2,let  a =, ghostwu2,


let  a =, 10;   ,,,,,,,如果(,a ) {   ,,,,,,,,,,,let  a =, 100;   ,,,,,,,,,,,console.log (, a );//100   ,,,,,,,}   ,,,,,,,console.log (, a );,//10

以上这种方式,不会报错,因为是两个不同的作用域

让的经典应用

在4个按钮中,获取当前被点击按钮的索引

& lt; script>   ,,,,,,,window.onload =,函数(){   ,,,,,,,,,,,var  aInput =, document.querySelectorAll(“输入”);   ,,,,,,,,,,,,(,var 小姐:=,0;,小姐:& lt;, aInput.length;,我+ +,){   ,,,,,,,,,,,,,,,aInput[我].onclick =,函数(){   ,,,,,,,,,,,,,,,,,,,警报(,小姐:);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

(js高手之路]es6系列教程- var,让,const详解