é»è¾æèµå¼ï¼||=ï¼
åºçº¿
广æ³å¯ç¨
èª 2020å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
é»è¾æèµå¼ï¼x ||= yï¼è¿ç®ä»
å¨ x 为å弿¶ä¸ºå
¶èµå¼ã
å°è¯ä¸ä¸
const a = { duration: 50, title: "" };
a.duration ||= 10;
console.log(a.duration);
// Expected output: 50
a.title ||= "title is empty.";
console.log(a.title);
// Expected output: "title is empty."
è¯æ³
expr1 ||= expr2
æè¿°
é»è¾æççè·¯è¿ç®æå³ç x ||= y ä¸ä¸å¼çä»·ï¼
x || (x = y);
妿左æä½æ°ä¸ä¸ºåå¼ï¼åç±äºé»è¾æè¿ç®ç¬¦ççè·¯è¿ç®ï¼ä¸è¿è¡èµå¼æä½ãä¾å¦ï¼ç±äº x 为 constï¼å¸¸éï¼ï¼ä»¥ä¸å¼åä¸ä¼æåºé误ï¼
const x = 1;
x ||= 2;
ä¹ä¸ä¼è§¦å setter 彿°ï¼
const x = {
get value() {
return 1;
},
set value(v) {
console.log("è°ç¨äº setter");
},
};
x.value ||= 2;
å®é
ä¸ï¼å¦æ x 为çå¼ï¼åæ ¹æ¬ä¸ä¼å¯¹ y æ±å¼ã
const x = 1;
x ||= console.log("y è¿è¡äºæ±å¼");
// ä»ä¹é½ä¸ä¼è¾åº
示ä¾
>设å®é»è®¤å 容
å½âlyricsâå ç´ ä¸ºç©ºæ¶ï¼åæ¾ç¤ºé»è®¤å¼ï¼
document.getElementById("lyrics").textContent ||= "没ææè¯ã";
å¨è¿éï¼çè·¯è¿ç®ç¹å«æç¨ï¼å 为å ç´ ä¸ä¼äº§çä¸å¿ è¦çæ´æ°ï¼ä¹ä¸ä¼å¼èµ·è¯¸å¦é¢å¤çè§£æã渲æã失å»ç¦ç¹çå¯ä½ç¨ã
注æï¼è¯·æ³¨ææ£æ¥ API è¿åçå¼ã妿è¿åçæ¯ç©ºåç¬¦ä¸²ï¼æ¯åå¼ï¼ï¼åå¿
é¡»ä½¿ç¨ ||=ï¼ä»¥æ¾ç¤ºâ没ææè¯ãâè䏿¯ç©ºå
容ãç¶èï¼å¦ææ¥å£è¿å null æ undefinedï¼ååºè¯¥ä½¿ç¨ ??=ï¼ç©ºå¼åå¹¶èµå¼ï¼è¿ç®ç¬¦ä»£æ¿ç©ºç½å
容ã
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-assignment-operators> |