第一種:
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中只...