聲明方式
- let局部聲明
var a=2;
{
let a=3;
}
console.log(a);//2
{
let a=3;
}
console.log(a);//報錯
上面兩個例子說明了let是局部變量聲明,let聲明只在區(qū)塊內起作用,外部是不可以調用的。
for(let i=0;i<10;i++){
console.log('循環(huán)體中:'+i);
}
console.log('循環(huán)體外:'+i);//undefined
let用在循環(huán)體中可以防止外部i被污染
- const聲明常量
有些變量是希望聲明后在業(yè)務層就不再發(fā)生變化了,簡單來說就是從聲明開始,這個變量始終不變,就需要用const進行聲明。
變量的解構賦值
從數(shù)組和對象中提取值,對變量進行賦值,這被稱為解構
- 數(shù)組的解構賦值
let [a,b,c]=[1,2,3];//a=1,b=2,c=3
可以簡單的理解為等號左邊和等號右邊的形式要統(tǒng)一,如果不統(tǒng)一解構將失敗
解構設置的默認值
let [foo = true] =[];
console.log(foo); //控制臺打印出true
- 對象的解構賦值
let {foo,bar} = {foo:'hello',bar:'world};
console.log(foo+bar); //控制臺打印出了“helloworld”
如果在解構之前就定義了變量,這時候你再解構會出現(xiàn)問題。下面是錯誤的代碼,編譯會報錯。
要解決報錯,使程序正常,我們這時候只要在解構的語句外邊加一個圓括號就可以了。
let foo;
({foo} ={foo:'hello'});
console.log(foo); //控制臺輸出hello
擴展運算符
- 對象擴展運算符(…)
function hello(...arg){
console.log(arg[0]);
console.log(arg[1]);
console.log(arg[2]);
console.log(arg[3]);
}
hello(1,2,3);//依次輸出1,2,3,undefined
擴展運算符的用處:
我們先用一個例子說明,我們聲明兩個數(shù)組arr1和arr2,然后我們把arr1賦值給arr2,然后我們改變arr2的值,你會發(fā)現(xiàn)arr1的值也改變了,因為我們這是對內存堆棧的引用,而不是真正的賦值。
2
3
4
5
let arr1=['www','akira','com'];
let arr2=arr1;
console.log(arr2);
arr2.push('lulu');
console.log(arr1);
//["www", "akira", "com"]
//["www", "akira", "com", "lulu"]
這是我們不想看到的,可以利用對象擴展運算符簡單的解決這個問題,現(xiàn)在我們對代碼進行改造。
let arr1=['www','akira','com'];
let arr2=[...arr1];
console.log(arr2);
arr2.push('lulu');
console.log(arr2);
console.log(arr1);
//["www", "akira", "com", "lulu"]
//["www", "akira", "com"]