關於 (a ==1 && a == 2 && a == 3) == true 的問題

不久前在網上看到一個這樣的提問:

有沒有可能使 a == 1 && a == 2 && a == 3 的結果爲 true ???

其實,大部分語言在特定情況下都是可以做到類似邏輯的。譬如 C#,C++ 等語言可以通過重載運算符來自定義的判斷邏輯實現,JavaScript 等語言由於其 == 運算符的特殊性,可以直接重寫其方法來實現。

以 JavaScript 語言爲例

javascript 語言的 === 運算符相當於大多數其他運算符的 == 運算符,反而,其 == 運算符由於忽略變量類型,實際上, == 運算符是先調用 === 運算符判斷,爲 false 時,再依次調用 valueOf 方法,toString 方法進行判斷。

所以,只需要簡單的重寫 valueOf 方法或者 toString 方法即可達到目的

var a = {i:1, 
	toString(){
		return a.i ++;
		}
}

console.log(a == 1 && a == 2 && a == 3);

運行結果:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章