a 1 a 2 a 3為true的情況

2021-09-18 00:25:09 字數 793 閱讀 5816

第一種:

const a=

}if(a==1&&a==2&&a==3)else

第二種:

var val=0;

object.defineproperty(window,'a',

})if(a==1&&a==2&&a==3)else

解釋

第一種:利用鬆散相等運算子的工作原理

1.嚴格運算子(===):

1)兩個運算元1型別不同,返回false

2)運算元存在nan,返回false

3)二者都為null或都為undefined,返回true;乙個為nan,乙個為undefined,返回false

4)運算元都為true或都為false,返回true

5)運算元都為數字,且值相等,返回true(-0===0,返回true)

6)都為字串,且字元相等,返回true

7)兩個引用指向同乙個物件、函式或陣列時,返回true

2.鬆散運算子(==):

1)乙個是null,乙個是undefined,返回true

2)乙個值是字串,乙個是數字,將字串裝換為數字,再比較

3)其中乙個運算元為true或false,先轉換為1或0再比較(true:1,false:0)

4)如果乙個值為物件,另乙個為數字或字串,會將物件轉換為1原始值(valueof函式)

5)其他不同型別的值都不相等

第二種:劫持js物件的getter,這種情況下(===)也適用

a 1 a 2 a 3什麼時候為true

這道題考的是型別轉換。v8 會提供了乙個 toprimitve 方法,該方法可以修改原始值,先檢測該物件中是否存在 valueof 方法,如果有並返回了原始型別,那麼就使用該值進行強制型別轉換 如果 valueof 沒有返回原始型別,就會呼叫 tostring 方法的返回值 如果 vauleof 和...

什麼時候a 1 a 2 a 3

廢話少說,我們直接上 var a if a 1 a 2 a 3 如果原始型別的值和物件比較,物件會轉為原始型別的值,再進行比較 a.valueof function if a1 a2 a 3 a 1 a.valueof 1 a.num 1 1 0 1 1 1 1 true a 2 a.valueof...

python2與python3的區別(1)

python2預設編碼方式是ascii碼。可在檔案的首行 encoding utf 8 python3預設編碼方式是utf 8 python2中print為語句,python3中為函式。python2中輸入內容分為raw input 和input 兩個函式,前者只接受文字輸入,而在python3中只...