美文网首页
对于'=='的思考

对于'=='的思考

作者: 前端阿良古 | 来源:发表于2019-03-24 02:02 被阅读0次

1. 抛出问题

控制台输出以下三个分别是什么:

  • 'hello' ? true : false
  • 'hello' == true
  • 'hello' == false

2. 现象

显而易见,第一句('hello' ? true : false)会输出true;然而,后面两句都输出了false(都输出false让我有点意外);

3. 解释

  • 对于第一句('hello' ? true : false)会输出true,就不用作过多解释了,就是字符串长度不为0的字符串在JavaScript里面都可以看作true
  • 对于第二句('hello' == true)为什么会输出false呢?
    • 首先,布尔值会被toNumber方法转成数字,则得到'hello' == 1
    • 其次,字符串'hello'也会被toNumber方法转换成数字,但是因为该字符串含有字母,所以转换后变成NaN,则表达式变成了NaN == 1,so结果输出false。
  • 同理可得,第三句('hello' == false)也输出false

4. 顺提'==='?

恒等符===相比起来就清晰多了,用恒等符比较,只有类型和值完全相同才返回true,否则都返回false

5. 总结

  • 为了规范,推荐在项目中使用恒等操作符‘===’而非‘==’,如用到,最好写下备注。同时,如果项目中使用了eslint,eslint也会在使用‘==’的位置报出提示
  • 尽量使用‘===’还有另外一个原因:因为它不需要隐式地进行类型转换,所以更快更省性能
  • ==运算会发生隐式转换,关于隐式转换,这里推荐一篇掘金看到的文章

相关文章

  • 对于'=='的思考

    1. 抛出问题 控制台输出以下三个分别是什么: 'hello' ? true : false 'hello' ==...

  • 对于婚姻的思考🤔

    结婚近4年,有娃初长成,最近有感,引发对婚姻的思考。婚姻是什么?是爱情么,还是亲情,感情,亦或是一种习惯或责任。可...

  • 对于裂变的思考

    目的:更高效的获客 本质:用户带用户,实现指数型传播 典型的裂变方案:拼团、砍价、抽奖(完成任务得更多抽奖机会)、...

  • 对于产品的思考

    人性是懒惰的,而正是因为懒惰,才推进了世界的进步。 世界上有很多产品,每个产品的出现都有一定的意义,或大或小,从它...

  • 对于沟通的思考

    今天早上我特别生气。事情是这样子的,我今天早上需要开车带大宝去幼儿园参加秋游活动,8:30出发。早上带着孩子收拾时...

  • 对于代码的思考

    来北京做程序员也将近两年了,想想这两年时间,感觉自己在技术上却没有什么突破,没有什么让自己感到什么成就的。总是...

  • 对于“舍得”的思考

    最近工作忙的几乎没有自己的时间,下班时间也得为工作操心,自己想要实现的理想越来越看不到实现的希望,慢慢不记得自己为...

  • 对于职业的思考

    所谓成熟是指适应社会现成准则的能力。一般来说,一个人如果过于专注于精神世界里的探索,就会没有兴趣也没有精力去琢磨如...

  • 对于未来的思考

    怀着一丝少女情怀来到了东莞,一路塞车费时2个半小时。来到了多年前熟悉的地方。有种又回到了原点的感觉。几年时间匆匆度...

  • 对于幸福的思考

    “我这一局只要发球发好,前三板打好基本上就可以左右战局了。” 高一,乒乓球赛,我对阵一个不知名大叔。 第一球,我用...

网友评论

      本文标题:对于'=='的思考

      本文链接:https://www.haomeiwen.com/subject/ookyvqtx.html