表達式:
1,箭頭表達式:將function用箭頭代替,參數相應進行處理;
用來聲明匿名函數,消除了傳統匿名函數的this指針問題;
1)
例:簡單的方法體為單行的方法,此時不需要大括號和return方法,表達式自動處理了;
如果方法體是多行的內容且有return語句時,就需要大括號了:
2)沒有參數的方法的情況,直接寫箭頭就可以了:
var sum = () =>{
}
3)只有一個參數的情況,只在外邊寫一個參數就可以了,不用寫括號:
var sum = arg1 =>{
console.log( arg1);
}
例:聲明一個數組,將數組中的偶數打印出來;
var arr=[1,2,3,4];
console.log(arr.filter( value => value % 2==0)); //filter函數的參數就是一個匿名函數,匿名函數只有一個參數value,不用加括號,方法體就是value%2==0;filter函數將偶數留下,其他的都過濾了;
結果就是如下圖:
4)消除this指針的問題:
傳統的javascript中用到this時會出現一系列問題,如打印不出來想要的內容:
使用傳統的javascript和this寫的代碼:
結果是這樣:並沒有打印出來“IBM”
使用typescript中的箭頭表達式:
結果是如下的,將IBM打印出來了:
2,循環,forEach(),for in ,for of ;
1)forEach():對值的循環;不允許break;忽略屬性;
desc是對該數組進行描述的一個屬性,因為typescript不支持這個特性,所以會報錯,但是forEach()會在運行時忽略掉這個屬性,所以運行結果正常顯示:
問題:forEach()方法除了會忽略屬性之外,還不允許打破循環,例如break語句;
2)for in:對鍵key的循環,不會忽略屬性;不允許break;常用於打印對象或集合中鍵值對中的鍵名;或是數組的 下標,及屬性值;
執行結果是:將下標和屬性值打印出來了
要想將值打印出來,就要將輸出語句改成console.log( arr[n] );這樣結果會將值打印出來;
for of循環:和forEach循環類似,都是對值的循環,而不是對鍵key的循環;特性是允許break; 忽略屬性;
代碼形式同for in, 只是in 變成of ,結果如下:忽略屬性:
允許break的情況:
結果如下:滿足break條件時就停止了;同時忽略屬性;
for of可以用在任何對象上,如數組,Map, Set, 字符串(就是將字符串中的字符都循環打出來)