ç¸çï¼==ï¼
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
ç¸çï¼==ï¼è¿ç®ç¬¦æ£æ¥å
¶ä¸¤ä¸ªæä½æ°æ¯å¦ç¸çï¼è¿åä¸ä¸ªå¸å°å¼ç»æãä¸ä¸¥æ ¼ç¸çè¿ç®ç¬¦ä¸åï¼å®ä¼å°è¯è½¬æ¢ä¸åç±»åçæä½æ°ï¼å¹¶è¿è¡æ¯è¾ã
å°è¯ä¸ä¸
console.log(1 == 1);
// Expected output: true
console.log("hello" == "hello");
// Expected output: true
console.log("1" == 1);
// Expected output: true
console.log(0 == false);
// Expected output: true
è¯æ³
x == y
æè¿°
ç¸çè¿ç®ç¬¦ï¼== å !=ï¼æä¾éä¸¥æ ¼ç¸çè¯ä¹ãè¿å¯ä»¥å¤§è´æ»ç»å¦ä¸ï¼
- 妿æä½æ°å
·æç¸åçç±»åï¼åæå¦ä¸æ¹å¼è¿è¡æ¯è¾ï¼
- 对象ï¼Objectï¼ï¼ä»
å½ä¸¤ä¸ªæä½æ°å¼ç¨åä¸ä¸ªå¯¹è±¡æ¶è¿å
trueã - å符串ï¼Stringï¼ï¼ä»
å½ä¸¤ä¸ªæä½æ°å
·æç¸åçå符ä¸é¡ºåºç¸åæ¶è¿å
trueã - æ°åï¼Numberï¼ï¼å¦æä¸¤ä¸ªæä½æ°çå¼ç¸åï¼åè¿å
trueã+0å-0被è§ä¸ºç¸åçå¼ã妿任ä½ä¸ä¸ªæä½æ°æ¯NaNï¼è¿åfalseï¼æä»¥ï¼NaNæ°¸è¿ä¸çäºNaNã - å¸å°å¼ï¼Booleanï¼ï¼ä»
彿使°é½ä¸º
trueæé½ä¸ºfalseæ¶è¿åtrueã - 大æ´åï¼BigIntï¼ï¼ä»
å½ä¸¤ä¸ªæä½æ°çå¼ç¸åæ¶è¿å
trueã - 符å·ï¼Symbolï¼ï¼ä»
å½ä¸¤ä¸ªæä½æ°å¼ç¨ç¸åçç¬¦å·æ¶è¿å
trueã
- 对象ï¼Objectï¼ï¼ä»
å½ä¸¤ä¸ªæä½æ°å¼ç¨åä¸ä¸ªå¯¹è±¡æ¶è¿å
- 妿å
¶ä¸ä¸ä¸ªæä½æ°ä¸º
nullæundefinedï¼å¦ä¸ä¸ªæä½æ°ä¹å¿ 须为nullæundefined以è¿åtrueãå¦åè¿åfalseã - å¦æå ¶ä¸ä¸ä¸ªæä½æ°æ¯å¯¹è±¡ï¼å¦ä¸ä¸ªæ¯åå§å¼ï¼åå°å¯¹è±¡è½¬æ¢ä¸ºåå§å¼ã
- å¨è¿ä¸æ¥ï¼ä¸¤ä¸ªæä½æ°é½è¢«è½¬æ¢ä¸ºåå§å¼ï¼åç¬¦ä¸²ãæ°åãå¸å°å¼ã符å·å大æ´åä¸çä¸ä¸ªï¼ãå©ä½ç转æ¢å°åæ
åµå®æã
- 妿æ¯ç¸åçç±»åï¼ä½¿ç¨æ¥éª¤ 1 è¿è¡æ¯è¾ã
- 妿å
¶ä¸ä¸ä¸ªæä½æ°æ¯ç¬¦å·èå¦ä¸ä¸ªä¸æ¯ï¼è¿å
falseã - 妿å
¶ä¸ä¸ä¸ªæä½æ°æ¯å¸å°å¼èå¦ä¸ä¸ªä¸æ¯ï¼åå°å¸å°å¼è½¬æ¢ä¸ºæ°åï¼
true转æ¢ä¸º 1ï¼false转æ¢ä¸º 0ãç¶å忬¡å¯¹ä¸¤ä¸ªæä½æ°è¿è¡å®½æ¾æ¯è¾ã - æ°åä¸å符串ï¼å°å符串转æ¢ä¸ºæ°åã转æ¢å¤±è´¥å°å¯¼è´
NaNï¼è¿å°ä¿è¯ç¸çæ¯è¾ä¸ºfalseã - æ°åä¸å¤§æ´åï¼ææ°å¼è¿è¡æ¯è¾ã妿æ°åçå¼ä¸º Â±â æ
NaNï¼è¿åfalseã - å符串ä¸å¤§æ´åï¼ä½¿ç¨ä¸
BigInt()æé 彿°ç¸åçç®æ³å°å符串转æ¢ä¸ºå¤§æ´åæ°ãå¦æè½¬æ¢å¤±è´¥ï¼è¿åfalseã
宽æ¾ç¸çæ¯å¯¹ç§°çï¼A == B å¯¹äº A å B çä»»ä½å¼æ»æ¯å
·æä¸ B == A ç¸åçè¯ä¹ï¼åºç¨è½¬æ¢ç顺åºé¤å¤ï¼ã
该è¿ç®ç¬¦ä¸ä¸¥æ ¼ç¸çï¼===ï¼è¿ç®ç¬¦ä¹é´ææ¾èçåºå«æ¯ï¼ä¸¥æ ¼ç¸çè¿ç®ç¬¦ä¸å°è¯ç±»å转æ¢ãç¸åï¼ä¸¥æ ¼ç¸çè¿ç®ç¬¦æ»æ¯è®¤ä¸ºä¸åç±»åçæä½æ°æ¯ä¸åçãä¸¥æ ¼ç¸çè¿ç®ç¬¦æ¬è´¨ä¸åªæ§è¡ç¬¬ 1 æ¥ï¼ç¶å对ææå
¶ä»æ
åµè¿å falseã
ä¸é¢çç®æ³æä¸ä¸ªâæ
æè¿åâï¼å¦æå
¶ä¸ä¸ä¸ªæä½æ°æ¯ document.allï¼åå®è¢«è§ä¸º undefinedãè¿æå³ç document.all == null æ¯ trueï¼ä½ document.all === undefined && document.all === null æ¯ falseã
示ä¾
>没æç±»å转æ¢çæ¯è¾
1 == 1; // true
"hello" == "hello"; // true
æç±»å转æ¢çæ¯è¾
"1" == 1; // true
1 == "1"; // true
0 == false; // true
0 == null; // false
0 == undefined; // false
0 == !!null; // trueï¼ççé»è¾éè¿ç®ç¬¦
0 == !!undefined; // trueï¼ççé»è¾éè¿ç®ç¬¦
null == undefined; // true
const number1 = new Number(3);
const number2 = new Number(3);
number1 == 3; // true
number1 == number2; // false
æ¯è¾å¯¹è±¡
const object1 = {
key: "value",
};
const object2 = {
key: "value",
};
console.log(object1 == object2); // false
console.log(object1 == object1); // true
æ¯è¾å符串å String 对象
请注æï¼ä½¿ç¨ new String() æé çå符串æ¯å¯¹è±¡ã妿å°å
¶ä¸ä¹ä¸ä¸å符串åé¢éè¿è¡æ¯è¾ï¼å该 String 对象å°è¢«è½¬æ¢ä¸ºå符串åé¢é并对å
¶å
容è¿è¡æ¯è¾ã使¯ï¼å¦æä¸¤ä¸ªæä½æ°é½æ¯ String 对象ï¼åå°å®ä»¬ä½ä¸ºå¯¹è±¡è¿è¡æ¯è¾ï¼å¹¶ä¸å¿
é¡»å¼ç¨ç¸åç对象æä¼ç¸çï¼
const string1 = "hello";
const string2 = String("hello");
const string3 = new String("hello");
const string4 = new String("hello");
console.log(string1 == string2); // true
console.log(string1 == string3); // true
console.log(string2 == string3); // true
console.log(string3 == string4); // false
console.log(string4 == string4); // true
æ¯è¾æ¥æåå符串
const d = new Date("December 17, 1995 03:24:00");
const s = d.toString(); // ä¾å¦ï¼âSun Dec 17 1995 03:24:00 GMT+0800 (ä¸å½æ åæ¶é´)â
console.log(d == s); // true
æ¯è¾æ°ç»åå符串
const a = [1, 2, 3];
const b = "1,2,3";
a == b; // trueï¼`a` 转æ¢ä¸ºå符串
const c = [true, 0.5, "hey"];
const d = c.toString(); // "true,0.5,hey"
c == d; // true
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-equality-operators> |