é»è¾æï¼||ï¼
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
对äºä¸ç»æä½æ°çé»è¾æï¼||ï¼é»è¾æåï¼è¿ç®ç¬¦ï¼å½ä¸ä»
å½å
¶ä¸ä¸ªæå¤ä¸ªæä½æ°ä¸ºçï¼å
¶è¿ç®ç»æä¸ºçãå®é常ä¸å¸å°ï¼é»è¾ï¼å¼ä¸èµ·ä½¿ç¨ãå½å®æ¯å¸å°å¼æ¶ï¼è¿åä¸ä¸ªå¸å°å¼ãç¶èï¼|| è¿ç®ç¬¦å®é
䏿¯è¿åä¸ä¸ªæå®çæä½æ°çå¼ï¼æä»¥å¦æè¿ä¸ªè¿ç®ç¬¦è¢«ç¨äºéå¸å°å¼ï¼å®å°è¿åä¸ä¸ªéå¸å°å¼ã
å°è¯ä¸ä¸
const a = 3;
const b = -2;
console.log(a > 0 || b > 0);
// Expected output: true
è¯æ³
expr1 || expr2
æè¿°
妿 expr1 è½è½¬å为 trueï¼è¿å expr1ï¼å¦åè¿å expr2ã
è½å¤è½¬å为 true çå¼å«åçå¼ï¼è½å¤è½¬å为 false çå¼å«ååå¼ã
è½å¤è½¬å为 false ç表达å¼ç示ä¾å¦ä¸ï¼
nullï¼NaNï¼0ï¼- 空å符串ï¼
""æ''æ``ï¼ï¼ undefinedã
尽管 || è¿ç®ç¬¦å¯ä»¥ä¸éå¸å°æä½æ°ä¸èµ·ä½¿ç¨ï¼ä½å®ä»ç¶è¢«è®¤ä¸ºæ¯ä¸ä¸ªå¸å°è¿ç®ç¬¦ï¼å 为å®çè¿å弿»æ¯å¯ä»¥è¢«è½¬æ¢ä¸ºå¸å°åºæ¬ç±»åãè¦æç¡®å°å°å
¶è¿åå¼ï¼æä»»ä½ä¸è¬ç表达å¼ï¼è½¬æ¢ä¸ºç¸åºçå¸å°å¼ï¼è¯·ä½¿ç¨åéè¿ç®ç¬¦æ Boolean æé 彿°ã
çè·¯æ±å¼
é»è¾æä»å·¦å°å³è¿è¡æ±å¼ï¼å®ä½¿ç¨å¦ä¸è§åè¿è¡âçè·¯âæµè¯ï¼
(some truthy expression) || expr 被çè·¯è¯ä¼°ä¸ºçå¼ã
çè·¯æå³çä¸é¢ç expr é¨åä¸è¢«æ±å¼ï¼å æ¤ä¸ä¼åçä»»ä½å¯ä½ç¨ï¼ä¾å¦ï¼å¦æ expr æ¯ä¸ä¸ªå½æ°è°ç¨ï¼è°ç¨å°±ä¸ä¼åçï¼ãè¿æ¯å 为å¨å¯¹ç¬¬ä¸ä¸ªæä½æ°è¿è¡è¯ä¼°åï¼æä½æ°çå¼å·²ç»ç¡®å®ãåè§ä¸è¿°ç¤ºä¾ï¼
function A() {
console.log("è°ç¨äº A");
return false;
}
function B() {
console.log("è°ç¨äº B");
return true;
}
console.log(B() || A());
// ç±äºè°ç¨äº B 彿°ï¼æ
ä¼è¾åº "called B" å°æ§å¶å°ï¼
// ç¶åè¾åº trueï¼è¿ç®ç¬¦çè¿ç®ç»æï¼
è¿ç®ç¬¦ä¼å 级
以ä¸è¡¨è¾¾å¼çèµ·æ¥çä»·ï¼ä½å®é
ä¸ä¸æ¯ï¼å 为 && è¿ç®ç¬¦æ¯ || è¿ç®ç¬¦å
æ§è¡ï¼åè§è¿ç®ç¬¦ä¼å
级ï¼ã
true || false && false; // è¿å trueï¼å 为 && å
æ§è¡
(true || false) && false; // è¿å falseï¼å 为åç»è¿ç®ç¬¦ä¼å
级æ´é«
示ä¾
>ä½¿ç¨æè¿ç®ç¬¦
ä¸å代ç å±ç¤ºäº ||ï¼é»è¾æï¼è¿ç®ç¬¦çç¨æ³ã
true || true; // t || t returns true
false || true; // f || t returns true
true || false; // t || f returns true
false || 3 === 4; // f || f returns false
"Cat" || "Dog"; // t || t returns "Cat"
false || "Cat"; // f || t returns "Cat"
"Cat" || false; // t || f returns "Cat"
"" || false; // f || f returns false
false || ""; // f || f returns ""
false || varObject; // f || object returns varObject
夿³¨ï¼å¦æä½ 使ç¨è¿ä¸ªæä½ç¬¦ä¸ºæäºåéæä¾é»è®¤å¼ï¼è¦æ³¨æä»»ä½åå¼é½ä¸ä¼è¢«ä½¿ç¨ãå¦æä½ åªéè¦è¿æ»¤æ null æ undefinedï¼å¯ä»¥èè使ç¨ç©ºå¼åå¹¶è¿ç®ç¬¦ã
å¸å°å¼è½¬åè§å
ä¸è¿ç®ç¬¦è½¬å为æè¿ç®ç¬¦
ä¸è¿°æ¶åå°å¸å°è¿ç®ç¬¦çè¿ç®ï¼
bCondition1 && bCondition2
æ»æ¯ä¸æ¤è¡¨è¾¾å¼ç¸åï¼
!(!bCondition1 || !bCondition2)
æè¿ç®ç¬¦è½¬å为ä¸è¿ç®ç¬¦
ä¸è¿°æ¶åå°å¸å°è¿ç®ç¬¦çè¿ç®ï¼
bCondition1 || bCondition2
æ»æ¯ä¸æ¤è¡¨è¾¾å¼ç¸åï¼
!(!bCondition1 && !bCondition2)
å»é¤åµå¥çæ¬å·
ç±äºé»è¾è¡¨è¾¾å¼æ¯ä»å·¦å°å³è¿è¡æ±å¼çï¼åªè¦éµå¾ªä¸å®çè§åï¼æ»æ¯å¯ä»¥ä»ä¸ä¸ªå¤æç表达å¼ä¸å 餿¬å·ã
ä¸è¿°æ¶åå°å¸å°è¿ç®ç¬¦ç夿è¿ç®ï¼
bCondition1 && (bCondition2 || bCondition3)
æ»æ¯ä¸æ¤è¡¨è¾¾å¼ç¸åï¼
!(!bCondition1 || !bCondition2 && !bCondition3)
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification > # prod-LogicalORExpression > |