let和const命令
<script>
/*
* ES6的块级作用域必须要有{}
* let命令 用来声明变量 只在let命令所在的代码块内有效
* 不存变量提升现象
* 存在暂时性死区,只能在声明的位置后面使用
* */
{
let a=10;
var b=19;
}
//console.log(a);//a is not defined.
console.log(b);
{
/*for(let i=0;i<10;i++){
console.log(i);//只在for循环体内有效
}*/
//console.log(i);//i is not defined
for(var i=0;i<10;i++){
console.log(i);
}
console.log(i);//10
}
{
var a=[];
/*for(var i=0;i<10;i++){
a[i]=function(){
console.log(i);//10
};
}
console.log(a[6]());//undefined*/
for(let i=0;i<10;i++){
a[i]=function(){
console.log(i);//6
};
}
a[6]();
}
{
//for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。
for (let i = 0; i < 3; i++) {
let i = 'abc';
console.log(i);//3次abc
}
}
//let不允许在相同域内,重复同一变量
{
//报错
/*function fun(){
let a=10;
var a=1;
}
//报错
function funa(){
let a=11;
let a=1;
}*/
}
/*
* const命令声明的是一个只读常量 一旦声明值不能改变
*作用域和let命令一样 只声明不赋值会报错
* 存在暂时性死区,只能在声明的位置后面使用
* 不可重复声明
* */
{
/* const a=10;
let a=1;
//报错
console.log(a);*/
}
/*
* es6声明变量6种方法:var function let const import class
* */
</script>