一、一個簡單的題目
曾經(jīng)碰到一個題,如下,會打印出什么?
console.log(true==true==true);
console.log(false==false==false);
console.log(3>2>1);
console.log(3<2<1);
這不就前三個打印true,最后一個打印false嗎?

這還用想,一秒鐘我就給出了答案!那么常識的問題。。。
二、啪啪啪被打臉
但是我個人習慣還是喜歡把代碼運行測試一下,于是乎我就在控制臺把上面四個console拷貝過去,輕蔑的按了下回車。。。

結果竟然是true false false true ???
四個題我回答錯了仨,簡直啪啪啪?。。?/p>

難道是我拷貝錯了,還是這控制臺出bug了?于是乎我又仔細的檢查幾遍,確定沒什么問題。
這就尷尬了,被打臉的感覺真是很不爽啊。。。
三、這是為什么呢
第二個console打印出false,有可能是特殊情況。但是第三個3>2>1,這特么是小孩都知道的事實,這都打印出false,有木有搞錯啊?于是我又單獨測試了下:
console.log(3>2);
console.log(2>1);
console.log(3>1);
輸出結果都是true,沒毛病啊。。。

突然,我發(fā)現(xiàn)這個console.log(3>2)輸出的是true,也就是說3>2 == true,那console.log(3>2>1) 不也就相當于 console.log(true > 1)了嗎?而js中true == 1,所以console.log(true > 1) 會打印出false,頓時有種在漫長黑暗中看到亮光的興奮。
四、摸摸臉
再看看第二個,false==false 會先返回true,再比較 true == false,結果自然打印出false。
第四個,3<2 會先返回 false,再比較false < 1,js中false == 0,所以打印出true。
所以四個console的結果分別是:true false false true
摸摸臉,還好打臉的事只有自己知道。。。
