è«çåä»£å ¥æ¼ç®å (||=)
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2020å¹´9æ.
è«çå代å
¥æ¼ç®å (||=) ã¯ãå·¦ãªãã©ã³ããå½å¤ã®å ´åã«ã®ã¿å³ãªãã©ã³ããè©ä¾¡ããå·¦ãªãã©ã³ãã«ä»£å
¥ãã¾ãã
試ãã¦ã¿ã¾ããã
const a = { duration: 50, title: "" };
a.duration ||= 10;
console.log(a.duration);
// äºæ³ãããçµæ: 50
a.title ||= "title is empty.";
console.log(a.title);
// äºæ³ãããçµæ: "title is empty."
æ§æ
x ||= y
解説
è«çå代å
¥æ¼ç®åã¯ç絡è©ä¾¡ãè¡ããããx ||= y 㯠x || (x = y) ã¨åçã§ãããã ããå¼ x ã¯ä¸åº¦ã ãè©ä¾¡ããã¾ãã
左辺ãå½å¤ã§ãªãå ´åãè«çåæ¼ç®åã®ç絡ãçºçãããã代å
¥ã¯å®è¡ããã¾ãããä¾ãã°ã x ã const ã§ãã£ã¦ãã以ä¸ã®ã³ã¼ãã¯ã¨ã©ã¼ãçºçãã¾ããã
const x = 0;
x ||= 2;
次ã®ã³ã¼ããã»ãã¿ã¼ãèµ·åãã¾ããã
const x = {
get value() {
return 1;
},
set value(v) {
console.log("ã»ãã¿ã¼ãå¼ã³åºããã¾ãã");
},
};
x.value ||= 2;
ããã¦ã常ã«ä»£å ¥ãè¡ããã以ä¸ã¨ç価ã§ã¯ããã¾ããã
const x = 1;
x ||= console.log("y ãè©ä¾¡ããã¾ãã");
// ä½ããã°åºåãããªã
ä¾
>æ¢å®ã®å 容ãè¨å®ãã
"lyrics" è¦ç´ ã空ã®å ´åã¯ãæ¢å®å¤ã表示ãã¾ãã
document.getElementById("lyrics").textContent ||= "No lyrics.";
ããã§ã®ç絡è©ä¾¡ã¯ãè¦ç´ ãä¸å¿ è¦ã«æ´æ°ããããã¨ããªãã追å ã®ãã¼ã¹ãã¬ã³ããªã³ã°ä½æ¥ããã©ã¼ã«ã¹ã®æå¤±ãªã©ã®æã¾ãããªãå¯ä½ç¨ãå¼ãèµ·ãããã¨ããªãã®ã§ãç¹ã«æçã§ãã
注æ: ãã§ãã¯å¯¾è±¡ã® API ãè¿ãå¤ã«æ³¨æãã¦ãã ãããç©ºã®æååï¼å½å¤ï¼ãè¿ãããå ´åã¯ã||= ã使ç¨ããå¿
è¦ãããã¾ãããã以å¤ã®å ´å (è¿å¤ã null ã¾ã㯠undefined ã®å ´å) 㯠??= æ¼ç®åã使ç¨ãã¦ãã ããã
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-assignment-operators> |