逗号操作符
這是個很容易被忽略的操作符,然而逗号操作符有個被忽略的很神奇的功能
在MDN上是這樣介紹這個操作符的:
**逗号操作符** 對它的每個操作數求值(從左到右),并傳回最後一個操作數的值。
看看這段代碼:
function number() {
console.log("use me");
return 999;
}
let test = (number(), 2);
console.log(test); // use me 2
沒錯,雖然逗号隻會傳回出最後一項的結果,但前面如果有函數也是會執行的。
再基于逗号會出現傳回值這個特性,還能和箭頭函數組合出現神奇的化學反應:
let number = 2;
function changeNumber() {
number = 999;
return number;
}
let test = (() => (changeNumber(), number))();
console.log(test); // 999
箭頭函數的一個特性:當這個函數隻有傳回時可以省略大括号和
return
,而逗号表達式隻是一個表達式并有一個傳回值,是以原先應該寫成三行的
let test = (()=>{
changeNumber();
return number;
})();
就能被簡化為一行
雖然逗号表達式有這樣一個強大能力,但是也會降低代碼的可讀性,使不使用還是看自己吧。。。