逗號操作符

逗號操作符

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

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

就能被簡化為一行

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