true还是false?

一、一个简单的题目

曾经碰到一个题,如下,会打印出什么?

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
摸摸脸,还好打脸的事只有自己知道。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,720评论 19 139
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,385评论 2 17
  • 一元操作符++,--操作符操作示例 +,-操作符+基本是原样输出 布尔操作符逻辑非 ! 如果前面再加上个!会看起来...
    togeek阅读 3,663评论 3 3
  • 使用 typeof bar === “object” 判断 bar 是不是一个对象有神马潜在的弊端?如何避免这种弊...
    Roselle_c阅读 2,778评论 0 0
  • 我以前也是很爱玩游戏的,也和大家一样花了很多钱充值到游戏里面升级装备,后来我有种被游戏玩的感觉,所以那时候我经常思...
    爾酥阅读 1,423评论 0 1