"?? "是JavaScript中的空值合并運(yùn)算符(nullish coalescing operator),是在ECMAScript 2020規(guī)范中新增的一個(gè)運(yùn)算符蹬挤。它主要用于處理空值或undefined的情況阴孟。
這個(gè)運(yùn)算符的作用是判斷左側(cè)表達(dá)式是否為null或undefined彤避,如果是的話荐类,就會(huì)返回右側(cè)的操作數(shù)。如果左側(cè)表達(dá)式的值不是null或undefined蹂随,則返回左側(cè)表達(dá)式的值十嘿。
例如,以下代碼中的res變量如果是null或undefined岳锁,則會(huì)被賦值為'default'绩衷,否則為res的值。
const res = someVariable ?? 'default';
需要注意的是,使用空值合并運(yùn)算符時(shí)咳燕,對(duì)于false勿决、0、空字符串''等值是不會(huì)被判定為null或undefined的招盲,因此會(huì)被當(dāng)做是有效值返回剥险。如果需要嚴(yán)格判斷是否為null或undefined,需要使用嚴(yán)格相等運(yùn)算符進(jìn)行比較(===)宪肖。
例如,在以下代碼中健爬,左側(cè)表達(dá)式的值雖然是0控乾,但因?yàn)樗皇莕ull或undefined,因此返回的仍然是0娜遵。
const res = 0 ?? 'default'; // 返回 0
總之蜕衡,空值合并運(yùn)算符是一種方便處理空值情況的運(yùn)算符,可以避免代碼中出現(xiàn)大量的判定語句设拟。