摘要:觸發(fā)第次觸發(fā)第次觸發(fā)第次觸發(fā)第次比較會隱式調(diào)用或者方法,如果原始類型的值和對象比較,對象會轉(zhuǎn)為原始類型的值,再進(jìn)行比較。
1. Object.defineProperty
var val = 1; Object.defineProperty(window, "a", { configurable: true, get: function() { console.log(`觸發(fā)第${val}次get`); return val++ } }) if(a == 1 && a == 2 && a == 3) { console.log("yes!") } 觸發(fā)第1次get 觸發(fā)第2次get 觸發(fā)第3次get yes!2. toString() valueOf()
const b = { i: 1, toString: function () { return this.i++; } } if(b == 1 && b == 2 && b == 3) { console.log("Hello World!"); // Hello World! } const b = { i: 1, valueOf: function () { return this.i++; } } if(b == 1 && b == 2 && b == 3) { console.log("Hello World!"); // Hello World! }
比較會隱式調(diào)用toString或者valueOf方法,如果原始類型的值和對象比較,對象會轉(zhuǎn)為原始類型的值,再進(jìn)行比較。對象轉(zhuǎn)換成原始類型的值,算法是先調(diào)用valueOf方法,如果返回的還是對象,再接著調(diào)用toString方法3. array.join = array.shift
var a = [1,2,3]; a.join = a.shift; console.log(a == 1 && a == 2 && a == 3); a == 1 ,此時 a 返回的就是shift返回的第一個元素 1 ,比較完之后 a = [2,3] a == 2 ,此時 a 返回的就是shift返回的第一個元素 2 ,比較完之后 a = [3] a == 3 ,此時 a 返回的就是shift返回的第一個元素 3 ,比較完之后 a = []
數(shù)組也是對象,數(shù)組的toString 方法返回一個字符串,該字符串由數(shù)組中的每個元素的 toString() 返回值經(jīng)調(diào)用 join() 方法連接(由逗號隔開)組成。
原文鏈接: https://arronf2e.github.io/a-1-and-a-2-and-a3-ever-evaluate-to-true-ji-chong-jie-fa-fen-xi.html
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/109462.html
博客 github 地址: https://github.com/HCThink/h-blog/blob/master/interesting/in1.md github 首頁(star+watch,一手動態(tài)直達(dá)): https://github.com/HCThink/h-blog 掘金 link , 掘金 專欄 segmentfault 主頁 原創(chuàng)禁止私自轉(zhuǎn)載 廣告 部門長期招收大量...
小編寫這篇文章的主要目的,就是給大家介紹一下關(guān)于python開發(fā)實例,有一些全功能的具體實例,那么,具體內(nèi)容小編就給大家講解下?! ≌摹 ≡谥暗幕A(chǔ)上進(jìn)一步實現(xiàn)了全功能表達(dá)式求值?! ∫阎С指↑c數(shù) 已支持字符串的處理,前加一個"(類似lisp語法) 支持減號/負(fù)號,一符兩用機制 支持所有算術(shù)運算符,包括**,//,% 支持全部7個比較運算符 支持與或非3個邏輯運算符 ...
摘要:我們舉個例子我們可以對上述對象使用方法,他會返回一個對象。在我們的問題中會企圖將對象轉(zhuǎn)化成數(shù)字的類型,進(jìn)行比較。幸運的是,在中有符號。當(dāng)我們每次調(diào)用的時候,他會將變量增加返回給我們。 如果你能確切的答出可以,那恭喜你,你可以繞道了 前言 有人會說,這個問題好奇葩,放在別的語言里,這要是能輸出true,估計是見鬼了,但是你別說,放在js中好真有可能。最近在一個人的推特上提了一個問題: ...
我們先講講Repeater基礎(chǔ)。我們可以在aspx文件中融入Repeater 控件,也可以在<ItemTemplate></ItemTemplate>包含的范圍融入自己的代碼,當(dāng)然這里也要使用到變量<%# Eval("SellerName")%>;注意兩側(cè)的引號。 .aspx: <asp:RepeaterID="Sel...
小編寫這篇文章的主要目的,主要是給大家介紹一下,關(guān)于Python中,四則表達(dá)式用法的一些實例,具體的代碼操作,下面會給大家做出一個相關(guān)解答?! ∷膭t運算表達(dá)式求值 思路說明 使用雙棧數(shù)據(jù)庫來實現(xiàn)——存放數(shù)值的棧nums與存放運算符的棧ops. 算法步驟 對初始表達(dá)式字符串exp進(jìn)行預(yù)處理,將其轉(zhuǎn)為一個元素對應(yīng)一個數(shù)值或運算符的列表explist. 遍歷explist,每個元素依次壓入...
閱讀 3456·2021-11-22 12:04
閱讀 2783·2019-08-29 13:49
閱讀 550·2019-08-26 13:45
閱讀 2347·2019-08-26 11:56
閱讀 1101·2019-08-26 11:43
閱讀 659·2019-08-26 10:45
閱讀 1350·2019-08-23 16:48
閱讀 2272·2019-08-23 16:07