一、一个简单的题目
曾经碰到一个题,如下,会打印出什么?
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 ???
四个题我回答错了仨,简直啪啪啪!!!
难道是我拷贝错了,还是这控制台出bug了?于是乎我又仔细的检查几遍,确定没什么问题。
这就尴尬了,被打脸的感觉真是很不爽啊。。。
三、这是为什么呢
第二个console打印出false,有可能是特殊情况。但是第三个3>2>1,这特么是小孩都知道的事实,这都打印出false,有木有搞错啊?于是我又单独测试了下:
console.log(3>2);
console.log(2>1);
console.log(3>1);
输出结果都是true,没毛病啊。。。
突然,我发现这个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
摸摸脸,还好打脸的事只有自己知道。。。