ES6基本语法之let和const


1.var可以重复声明

var a = 12;
var a = 5;
alert(a) //5

2.var无法限制修改

如:PI = 3.1415;

3.var没有块级作用域

{


}

像:

 if(){

}
for(){

}

这都是块级作用域,在这里面定义的变量则在块级域外面是没法使用的。

4.let和const不能重复声明

let a =12;
let a=5;
alert(a)//报错

const a =12;
const a=5;
alert(a)//报错

5.let是可以重复修改的,但是const是常量,是不能重复修改的。

let a = 12;
a = 5;
alert(a); //5

const a = 12;
a = 5;
alert(a);//报错

6.块级作用域

if(true){
let a = 12;
}
alert(a);//报错,a is not defined

if(true){
const a = 12;
}
alert(a);//报错,a is not defined

语法快不仅仅是if,for等这些,如下面的也是块级作用域:

{
let a = 5;
console.log(a) //5
}
console.log(a); //报错,a is not defined

7.块级作用域的用法:

现在有三个button,分别点击,传统的写法是:

window.onload = function(){
var aBtn = document.getElementByTagName("input");
   for(var i=0;i<aBtn.length;i++){
    	aBtn[i].onclick = function(){
        alert(i) 
      }
   }
}

结果每次弹出的都是3,然后我们采用函数作为块级作用域的方式在外边增加一层,如下:

window.onload = function(){
var aBtn = document.getElementByTagName("input");
   for(var i=0;i<aBtn.length;i++){
		(function(i){
			aBtn[i].onclick = function(){
             alert(i) 
         }
		})(i)
   }
}

虽然问题解决了,但是如果用现在ES6的let,本身就是在块级作用域中有效,更加方便;

window.onload = function(){
var aBtn = document.getElementByTagName("input");
   for(let i=0;i<aBtn.length;i++){
			aBtn[i].onclick = function(){
             alert(i) 
         }
   }
}

最后总结如下:

|:-😐:-😐:-😐:-😐

名称 重复声明 修改 块级作用域
let 不能重复声明 变量,可以修改 块级作用域
const 不能重复声明 常量,不可以修改 块级作用域


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM