zoukankan      html  css  js  c++  java
  • 相等表达式

    ‘==’ 又是一个JavaScript 中一个著名的失误,许多的编程规范甚至要求完全避免用 == 运算,使用 ‘=== 来替代 ‘==‘。

    对于 ‘==’, 它在ECMA262 中写的非常的复杂,但是归根结底,类型不通的变量比较的时候也只有三条规则:

    • undefined 与 null 相等
    • 字符串和 bool都转换为数字再比较
    • 对象转换为 primitive类型再比较

    这样我们就可以理解:

    • flase == ‘0’ (true)
    • true == ‘true’ (true)
    • [] == 0 (true)
    • [] == false (true)
    • new Boolean(‘false’) == false (false)

    这里不太符合直觉的有两点:

    • 一个是即使字符串与 boolean 比较,也都要转换成数字;

    • 另一个是对象如果转换成了 primitive 类型跟等号另一边类型恰好相同,则不需要转换成数字。

    此外,== 的行为也经常跟 if 的行为(转换为 boolean)混淆。总之,我建议,仅在确认 == 发生在 Number 和 String 类型之间时使用,比如:

    document.getElementsByTagName('input')[0].value == 100
    

    总而言之,尽量使用 ===

  • 相关阅读:
    Hibernate 中 get()和load()的区别
    Socket网络编程
    经典
    jsp的九大内置对象及EL表达式的隐含对象
    TreeSet
    centos7.4安装npm
    centos7.4中安装docker
    centos7安装nginx
    centos中安装基础环境
    在docker中安装mysql
  • 原文地址:https://www.cnblogs.com/ssaylo/p/13158354.html
Copyright © 2011-2022 走看看