let a = ?;
console.log(a == 1 &&a == 2 && a == 3)
題目:?? 是多少才能輸出true?
思路:這道題主要是考察的是等號(hào)運(yùn)算符的規(guī)則和類型轉(zhuǎn)換的規(guī)則岛蚤,結(jié)合上面的類型轉(zhuǎn)換的特點(diǎn)就可以把代碼寫(xiě)成這樣
// 我們先把a(bǔ)賦值成一個(gè)對(duì)象
// 講一下為什么
// 因?yàn)槿绻愋筒幌嗤蜁?huì)去調(diào)用一個(gè)叫valueOf的方法
// 我們通過(guò)這個(gè)特點(diǎn)我們就可以寫(xiě)出來(lái)了
// 我們就可以給a這個(gè)對(duì)象重寫(xiě)一下valueOf的方法
var a = {
????let b = 0;
????valueOf:function(){
????????return this.b++;
????}
}
講一下為什么
因?yàn)槲覀冎貙?xiě)了valueOf這個(gè)方法所以代碼就會(huì)使用我們所重寫(xiě)的valueOf方法
這時(shí)候呢 我們給定一個(gè)變量的初始值是0
第一次比較的時(shí)候 它就會(huì)因?yàn)轭愋筒煌?他就會(huì)調(diào)用我們valueOf方法
這時(shí)候我們的b已經(jīng)加一了 所以放回的就是1 這個(gè)時(shí)候就相等了
第二次比較的時(shí)候 它的類型也不同 也會(huì)調(diào)用我們的valueOf方法
這時(shí)候我們的b已經(jīng)加一了 所以放回的就是2 也相等了 第三次同樣的
所以這道題就解決了
前端小菜雞一枚 寫(xiě)的不好有什么不對(duì)的地方還請(qǐng)大家多多指出