1.let
console.log(i);
for(var i=0;i<10;i++){
console.log(i);
var a=i;
}
console.log(i);//10
console.log(a);//9
i和a都能取得到嗜闻,說明js中用var在for中聲明的變量可以在外部訪問樊拓。
for(let i=0;i<10;i++){
let a=i;
}
console.log(i);
console.log(a);
在js/es6中用let在for中聲明的變量,無法在外部訪問歉甚。
var a=0;
let a=1;
console.log(a);
let聲明的變量,變量名不能重復(fù)扑眉!而且必須先聲明后使用纸泄,換句話來說let沒有變量的提升和變量的污染。
塊級作用域相當(dāng)于局部作用域腰素,在js中只有函數(shù)才能創(chuàng)造一個局部作用域聘裁,但是在es中只要是個大括號都是都是局部作用域(也是塊級作用域)
{
var a=0;
let b=1;
}
console.log(a);//0
console.log(b);//報錯,找不到變量b
let a=0;
{
console.log(a);
//不能先聲明后聲明
let a=1;
console.log(a);//1
}
console.log(a);//0
在js中全局變量可以在局部環(huán)境下使用弓千,局部不能在全局下使用,在es6中全局只能在全局使用衡便,局部也只能在局部使用,而且全局聲明的變量跟局部局部聲明的變量沒有任何關(guān)系,變量名都可以一樣,let聲明的變量只能在當(dāng)前作用域使用.
2.const
- const關(guān)鍵字在es6中用來聲明靜態(tài)常量
- 常量所有字母必須全部大寫(規(guī)范)
const PI=3.1415926;
console.log(PI);
PI=0;
console.log(PI);//報錯,常量無法修改
const ABC;
console.log(ABC);//常量在聲明中必須賦值
var a=0;
let aaa=1;
//var聲明的變量是寫在了window對象上洋访,是window的屬性或方法镣陕。
//let聲明的變量跟window完全沒有關(guān)系
console.log(window);
let ppp=123;
function fn1(p){
let a=p;
console.log(a);
}
fn1(ppp);
let [a,b,c]=[1,2,3];
console.log(a);
console.log(b);
console.log(c);
let arr1=0;
let arr=[1,2,3,4,5,6,7,8];
console.log(...arr);
arr1=arr;
console.log(arr1);
arr1.push(0);
let arr1=[...arr];