一、ES6新增的變量的定義
let const 關鍵詞定義變量
1、let定義變量:
特點:
A、不會進行預解析,結果會報錯
B、與forEach()中的變量類似,每次執行都會定義一個互相之間不影響的新變量
C、不能重復定義變量名稱,一個變量名稱只能定義一次
D、定義的變量如果在{}中,則只能在{}中被執行調用,其他位置都不可以。所以在不同{}中,定義的變量名稱是可以重復之用的
E、在循環中最好只用let定義
2、const定義變量:
特點:
A、在js中,const定義的變量成為常量,不能被重復賦值,數據已經定義,不能修改
B、const也是定義在{}中,不能在{}外調用
C、const定義的是對象、數組、函數、引用數據類型。其中只要引用數據類型的地址沒變化,就可以改變引用數據類型中的單元存儲的數據
D、const可以預解析,結果為undefined
3、內外部調用演示示例:
//每次循環都是獨立的,互不影響i變量存儲對應的數值 var oLis = document.querySelectorAll('li'); for(let i = 0; i <= oLis.length - 1; i++){ oLis[i].onclick = function(){ //在內部調用是沒有問題的 console.log(i+1) } } //如果在外面調用let定義的變量,則會報錯 console.log(i)
4、分別使用var、let、const重復賦值做對比
A、使用var聲明變量
//使用var聲明變量 var int1 = 100; var int1 = 200; //結果為200,重復復置會覆蓋之前的 console.log(int1);
B、使用let聲明變量
//使用let聲明變量 let int2 = 300; let int2 = 400; //因為同一個變量,兩次用let聲明,所以會報錯 console.log(int2);
C、使用const聲明變量
//使用const聲明變量 const int3 = 500; const int3 = 600; //因為同一個變量,兩次用const聲明,所以會報錯 console.log(int3);
5、特殊用法:
A、let雖然不能在{}外面調用,但可以在直接調用函數
function fun2(){ let str = '上海'; return str; } //調用函數,即可輸出結果為‘上海’ console.log(fun2());
B、const雖然一旦賦值,就不能改變。但可以修改數組、對象中存儲的數據
//修改數組數據,但不修改數組 const arr = [1,2,3,4,5]; arr[0] = '北京' //輸出[北京,2,3,4,5]; console.log(arr);
//修改對象數據,但不修改對象 const obj = {name:'張三'}; obj.name = '李四'; //輸出{name:李四} console.log(obj)
二、箭頭函數:函數的另外一種寫法
1、普通函數:
fun1 = function(){ 函數 }
2、箭頭函數:
fun2 = ()=>{}
3、特點
A、與普通函數執行效果完全相同
B、將函數主題function()換成了()=>
C、如果只有一個參數,可以不寫(),例如:e=>{console.log(e);}
D、如果只有一行代碼,可以不寫{},例如:e=>console.log(e)
