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>