zoukankan      html  css  js  c++  java
  • JavaScript中的真和假,==和===, 不等

    咋JS中,下面这些值表示 “假”:

    "" (empty string)

    0,-0,NaN (invalid number)

    null, undefined

    false

    除了上面这些在“假”值名单中的其他任何值都是“真”的,这里是一些例子:

    "hello"

    41

    true

    [],[1,"2",3] (arrays)

    {}, {a: 42} (objects)

    function foo() { .. } (functions)

    == 检测值是否相等的时候,允许发生转换(隐式转换)

    ===检测值的时候则不允许发生转换, 所以 ===被称为“严格相等”

    所以:

    == 非严格相等中发生的隐式转换

    === 严格相等

    var a = "42";

    var b = 42;

    a == b  // true

    a === b  //false

    在JS中,有人不建议使用==,这里有一些总结的规则,来说明何时要避免使用==,何时可以放心的使用==

    . 如果比较的两个值可能是 true 或者 false, 避免使用 ==

    . 如果比较的两个值是这些特定值(0, "", [] --- 空数组), 避免使用 ==

    . 所有其他情况下,你都可以放心使用==, 它不但安全,而且可以提高可读性来简化代码

    最大的原则: 如果你对这些值很确定,那使用 == 就是安全的,就可以使用

    如果你对这些值不太确定,那就使用 ===

    eg: 默认情况下 array数组转为string字符串,就是简单地把所以值通过逗号(,)连接在一起。你可能以为两个拥有相同内容的array是相等的, 但是实际上并不是这样

    var a = [1,2,3];

    var b = [1,2,3];

    var c = "1,2,3";

    a == c; //true

    b == c; //true

    a == b; //false

    不等

    在JavaScript中,string值也能被用于不等比较,使用的是字母表规则  ("bar" < "foo")

    注意与(“==”和“===”) 不同的是, 不等运算符没有 “严格不等” 运算符

    var a = 35;
    var b = "36";
    var c = "37";
    a < b;  //true
    b < c;  //true

    不同类型的值比较中, 有个特别坑的情况:

    var a = 35;
    var b = "test";
    a < b;  //false
    a > b; //false
    a == b; //false

    在 < 和 > 比较中,b被强制转换成"无效的数字"NaN, ES规范中,NaN既不大于也不小于其他任何值.

  • 相关阅读:
    关于bind named.conf.options
    MASM 16位汇编程序几种典型的格式
    About GCC
    WebForms UnobtrusiveValidationMode 需要“jQuery”ScriptResourceMapping。
    Linux系统下的shutdown命令用于安全的关闭/重启计算机
    TreeView.ImageSet 属性
    python seaborn
    python neo4j
    Impala与Hive的比较
    pandas.resample()
  • 原文地址:https://www.cnblogs.com/wphl-27/p/8520254.html
Copyright © 2011-2022 走看看