ES6——let、const
1、let
(1)Es6中新的声明变量的关键字let,使用let声明的变量保存在数据段中,它不是一个真正的全局变量,当先使用后声明时,会报错;
(2)let与var的区别:
关键字 | 说明 |
---|---|
let | 保存在数据段中,使用变量名字访问,必须先声明后使用 |
var | 保存在堆中,通过变量名字访问或者window.x访问,可以先使用后声明,未声明时使用其值为undefined |
(3)在实际开发中:
先声明后使用,多用let少用var,不要使用变量提升,let不出块而var出块。
(4)块:
let声明的变量只能在块中使用,二var声明的变量可以在块外使用
例1:
<div id="box1"></div>
<div id="box2"></div>
<script>
var box1 = document.getElementById('box1');
var box2 = document.getElementById('box2');
function show() {
if (1) {
var m = 1000;
let n = 2000;
}
box1.innerHTML = m;//1000
box2.innerHTML = n;//error
}
show();
</script>
块:一个花括号为一个块
由于let不能出块,所以在内部块和外部块中可以用let声明相同名字的变量,但在同一块中不能声明同名变量
例2:
function show(){
let a = 1000;
if(1){
let a = 100;
console.log(a);//100
}
console.log(a);//1000
}
show();
for循环也是一个块,for的表达式中使用let声明的变量不能出循环体:
例3:
function show2(){
for(let i = 0; i < 10; i++){
console.log(i);
}
console.log(i);//error
}
show2();
2、const
const声明的变量是不可变的是一个常量,声明变量时就要赋值,同let一样不能出块,不能声明重名常量
例:
const a = 100;
// a = 200;//error
function show3(){
for(let i = 0; i < 10; i++){
const i = 10;
console.log(i);//10 为常量i
}
console.log(i);//error
}
show3();