天天看點

逗号操作符

逗号操作符

這是個很容易被忽略的操作符,然而逗号操作符有個被忽略的很神奇的功能

在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;
})();
           

就能被簡化為一行

雖然逗号表達式有這樣一個強大能力,但是也會降低代碼的可讀性,使不使用還是看自己吧。。。