é»è¾éï¼!ï¼
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
é»è¾éï¼!ï¼é»è¾è¿æ¥ååï¼è¿ç®ç¬¦å°ç弿åå¼è½¬æ¢ä¸ºå¯¹åºçç¸åå¼ï¼ç»å¸¸ç¨äºå¸å°ï¼é»è¾ï¼å¼ãå½ä¸éå¸å°å¼ä½¿ç¨æ¶ï¼å¦æå
¶æä½æ°å¯ä»¥è½¬å为 trueï¼åè¿å falseï¼å¦åè¿å trueã
å°è¯ä¸ä¸
const a = 3;
const b = -2;
console.log(!(a > 0 || b > 0));
// Expected output: false
è¯æ³
!expr
æè¿°
妿å
¶æä½æ°å¯ä»¥è½¬å为 trueï¼åè¿å falseï¼å¦åè¿å trueã
è½å¤è½¬å为 true çå¼å«åçå¼ï¼è½å¤è½¬å为 false çå¼å«ååå¼ã
è½å¤è½¬å为 false ç表达å¼ç示ä¾å¦ä¸ï¼
nullï¼NaNï¼0ï¼- 空å符串ï¼
""æ''æ``ï¼ï¼ undefinedã
尽管 ! è¿ç®ç¬¦å¯ä»¥ä¸éå¸å°æä½æ°ä¸èµ·ä½¿ç¨ï¼ä½å®ä»ç¶è¢«è®¤ä¸ºæ¯ä¸ä¸ªå¸å°è¿ç®ç¬¦ï¼å 为å®çè¿å弿»æ¯å¯ä»¥è¢«è½¬æ¢ä¸ºå¸å°åºæ¬ç±»åãè¦æç¡®å°å°å
¶è¿åå¼ï¼æä»»ä½ä¸è¬ç表达å¼ï¼è½¬æ¢ä¸ºç¸åºçå¸å°å¼ï¼è¯·ä½¿ç¨åéè¿ç®ç¬¦ï¼!!ï¼æ Boolean æé 彿°ã
示ä¾
>使ç¨éè¿ç®ç¬¦
ä¸å代ç å±ç¤ºäº !ï¼é»è¾éï¼è¿ç®ç¬¦çç¨æ³ã
!true; // !t returns false
!false; // !f returns true
!""; // !f returns true
!"Cat"; // !t returns false
åéè¿ç®ç¬¦ï¼!!ï¼
å¯ä»¥ä½¿ç¨å 个éè¿ç®ç¬¦ä¸²èèµ·æ¥ï¼æç¡®å°å¼ºå¶å°ä»»ä½å¼è½¬æ¢ä¸ºç¸åºçå¸å°åºæ¬ç±»åãè¿ç§è½¬æ¢æ¯åºäºå¼çâç宿§âæâèåæ§âï¼è¯¦è§çå¼ååå¼ï¼ã
ä¹å¯ä»¥ä½¿ç¨ Boolean 彿°å®æè½¬æ¢ã
!!true; // !!truthy returns true
!!{}; // !!truthy returns true: any object is truthy...
!!new Boolean(false); // ...even Boolean objects with a false .valueOf()!
!!false; // !!falsy returns false
!!""; // !!falsy returns false
!!Boolean(false); // !!falsy returns false
éè¿ç®ç¬¦è½¬æ¢
ä¸è¿°æ¶åå°å¸å°å¼çè¿ç®ï¼
!!bCondition
æ»æ¯ä¸æ¤è¡¨è¾¾å¼ç¸åï¼
bCondition
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-logical-not-operator> |