Baseline Widely available
空å¼åå¹¶è¿ç®ç¬¦ï¼??
ï¼æ¯ä¸ä¸ªé»è¾è¿ç®ç¬¦ï¼å½å·¦ä¾§çæä½æ°ä¸º null
æè
undefined
æ¶ï¼è¿åå
¶å³ä¾§æä½æ°ï¼å¦åè¿å左侧æä½æ°ã
const foo = null ?? "default string";
console.log(foo);
// Expected output: "default string"
const baz = 0 ?? 42;
console.log(baz);
// Expected output: 0
è¯æ³ æè¿°
空å¼åå¹¶è¿ç®ç¬¦å¯ä»¥è§ä¸ºé»è¾æè¿ç®ç¬¦ï¼||
ï¼çç¹ä¾ãåè
å¨å·¦ä¾§æä½æ°ä¸ºä»»ä½å弿¶è¿åå³ä¾§æä½æ°ï¼èä¸ä»
ä»
æ¯ null
æ undefined
ãæ¢å¥è¯è¯´ï¼å¦æä½ ä½¿ç¨ ||
为å¦ä¸ä¸ªåé foo
æä¾æäºé»è®¤å¼ï¼èä½ å°æäºåå¼è§ä¸ºå¯ç¨å¼ï¼ä¾å¦ ''
æ 0
ï¼ï¼åå¯è½ä¼éå°æå¤çè¡ä¸ºãæ´å¤ç¤ºä¾åè§ä¸æ¹ã
空å¼åå¹¶è¿ç®ç¬¦çè¿ç®ç¬¦ä¼å
级æ¯ç¬¬äºä½çï¼ç´æ¥ä½äº ||
ä¸ç´æ¥é«äºæ¡ä»¶ï¼ä¸å
ï¼è¿ç®ç¬¦ã
å° ??
ç´æ¥ä¸é»è¾ä¸ï¼&&
ï¼åé»è¾æï¼||
ï¼è¿ç®ç¬¦ç»åä½¿ç¨æ¯ä¸å¯åçãè¿ç§æ
åµä¸ä¼æåºè¯æ³é误ã
null || undefined ?? "foo"; // æåº SyntaxError
true && undefined ?? "foo"; // æåº SyntaxError
ç¸åï¼è¯·æä¾æ¬å·ä»¥æç¡®è¡¨ç¤ºä¼å 级ï¼
(null || undefined) ?? "foo"; // è¿åâfooâ
ç¤ºä¾ ä½¿ç¨ç©ºå¼åå¹¶è¿ç®ç¬¦
å¨è¿ä¸ªä¾åä¸ï¼æä»¬ä½¿ç¨ç©ºå¼åå¹¶è¿ç®ç¬¦ä¸ºå¸¸éæä¾é»è®¤å¼ï¼ä¿è¯å¸¸éä¸ä¸º null
æè
undefined
ã
const nullValue = null;
const emptyText = ""; // åå¼
const someNumber = 42;
const valA = nullValue ?? "valA çé»è®¤å¼";
const valB = emptyText ?? "valB çé»è®¤å¼";
const valC = someNumber ?? 0;
console.log(valA); // "valA çé»è®¤å¼"
console.log(valB); // ""ï¼ç©ºå符串è½ç¶æ¯åå¼ï¼ä½ä¸æ¯ null æè
undefinedï¼
console.log(valC); // 42
为åéèµé»è®¤å¼
以åï¼å¦ææ³ä¸ºä¸ä¸ªåéèµé»è®¤å¼ï¼é常çåæ³æ¯ä½¿ç¨é»è¾æè¿ç®ç¬¦ï¼||
ï¼ï¼
let foo;
// foo 仿ªè¢«èµäºä»»ä½å¼ï¼å æ¤å®ä»ç¶æ¯æªå®ä¹ç
let someDummyText = foo || "Hello!";
ç¶èï¼ç±äº ||
æ¯ä¸ä¸ªå¸å°é»è¾è¿ç®ç¬¦ï¼å·¦ä¾§çæä½æ°ä¼è¢«å¼ºå¶è½¬æ¢æå¸å°å¼ç¨äºæ±å¼ãä»»ä½åå¼ï¼0
ã''
ãNaN
ãfalse
ççï¼é½ä¸ä¼è¢«è¿åãå¦æä½ ä½¿ç¨ 0
ã''
æ NaN
ä½ä¸ºææå¼ï¼å°±ä¼åºç°ä¸å¯é¢æçåæã
const count = 0;
const text = "";
const qty = count || 42;
const message = text || "hi!";
console.log(qty); // 42ï¼è䏿¯ 0
console.log(message); // "hi!"ï¼è䏿¯ ""
空å¼åå¹¶è¿ç®ç¬¦å¯ä»¥é¿å
è¿ç§é·é±ï¼å
¶åªå¨ç¬¬ä¸ä¸ªæä½æ°ä¸º null
æ undefined
æ¶ï¼è䏿¯å
¶ä»åå¼ï¼è¿å第äºä¸ªæä½æ°ï¼
const myText = ""; // 空å符串ï¼å
¶ä¹æ¯åå¼ï¼
const notFalsyText = myText || "Hello world";
console.log(notFalsyText); // Hello world
const preservingFalsy = myText ?? "Hi neighborhood";
console.log(preservingFalsy); // ''ï¼myText æ¢ä¸æ¯ undefined ä¹ä¸æ¯ nullï¼
çè·¯
ä¸ OR å AND é»è¾è¿ç®ç¬¦ç¸ä¼¼ï¼å½å·¦è¡¨è¾¾å¼ä¸ä¸º null
æ undefined
æ¶ï¼ä¸ä¼å¯¹å³è¡¨è¾¾å¼è¿è¡æ±å¼ã
function A() {
console.log("彿° A 被è°ç¨äº");
return undefined;
}
function B() {
console.log("彿° B 被è°ç¨äº");
return false;
}
function C() {
console.log("彿° C 被è°ç¨äº");
return "foo";
}
console.log(A() ?? C());
// 便¬¡æå° "彿° A 被è°ç¨äº"ã"彿° C 被è°ç¨äº"ã"foo"
// A() è¿åäº undefinedï¼æä»¥è¿ç®ç¬¦ä¸¤è¾¹ç表达å¼é½è¢«æ§è¡äº
console.log(B() ?? C());
// 便¬¡æå° "彿° B 被è°ç¨äº"ã"false"
// B() è¿åäº falseï¼æ¢ä¸æ¯ null ä¹ä¸æ¯ undefinedï¼
// æä»¥å³ä¾§è¡¨è¾¾å¼æ²¡æè¢«æ§è¡
ä¸å¯éé¾è¿ç®ç¬¦ï¼?.
ï¼çå
³ç³»
空å¼åå¹¶è¿ç®ç¬¦å° undefined
ä¸ null
è§ä¸ºç¹æ®å¼ï¼å¯éé¾è¿ç®ç¬¦ï¼?.
ï¼ä¹æ¯å¦æ¤ã该è¿ç®ç¬¦å¨è®¿é®å¯è½ä¸º null
æ undefined
çå¯¹è±¡å±æ§æ¶é常æç¨ãå°è¿ä¸¤è
ç»åï¼å¯ä»¥å®å
¨å°è®¿é®å¯è½ä¸ºç©ºå¼çå¯¹è±¡å±æ§ï¼å¹¶å¨å
¶ä¸ºç©ºå¼æ¶æä¾é»è®¤å¼ã
const foo = { someFooProp: "hi" };
console.log(foo.someFooProp?.toUpperCase() ?? "not available"); // "HI"
console.log(foo.someBarProp?.toUpperCase() ?? "not available"); // "not available"
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4