• javascript 比较运算符分析


    最新的关于比较符运算的地址关于JS相等比较算法(==)的原理

    看示例

            if ([]) {
                console.log("true")
            }
            if ([] != true) {
                console.log("false")
            }
            //result true false

    []到底是true还是false?

        console.log([] == ![]);
         //result true

    []到底是true还是false?

    继续分析

            console.log(boolean([]));
            //result true

    []是true? 对的 []的确是true。 那为什么会出现前面两种结果呢?

    继续分析

    我们知道表达式都是从左往右计算的

    设原始表达式 0 == 0;

    首先来还原右边

    0 == 0; true

    然后接着推算 

    false == 0; true

    接着

    "" == false; true

    接着

    [] == ""; true

    右边还原完毕

            0 == 0;
            false == 0;
            "" == 0;
            [ ] == 0; 

    接着来还原左边

    [ ] == false; true

    接着

    false == ![]; true

    所以

    [ ] == ![]; true

    左边还原完毕
    //出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!

    最后呈现结果

            0 == 0;
            false == 0;
            "" == 0;
            [] == 0;
            [] == false;
            [] == ![]; 

    原理分析

            //表达式从左往右计算
            [ ] == ![];     //![]转为为bool 
            [ ] == false;   //上一步的结果 两者中有bool,会把 bool 先转换为对应的 number
            [ ] == 0;       //上一步的结果 有一方为number一方为string,会把string转换为数字 [ ].toString()
            "" == 0;        //上一步的结果 把string直接转换为bool的时候,空字符串‘’转换为 false,除此外的一切字符串转换为 true
            false == 0;     //上一步的结果 两者中有bool,会把 bool 先转换为对应的 number
            0 == 0;         //上一步的结果

    总结:

    比较方式遵循如下
    1两者中有bool,会把 bool 先转换为对应的 number
    2有一方为number一方为string,会把string转换为数字 (不是string的会先转成string)
    3把string直接转换为bool的时候,空字符串‘’转换为 false,除此外的一切字符串转换为 true 


    PS:所有数组和对象的bool值都是true,null是false

    以上仅是个人分析,更权威的请查找官方资料,谁找到资料了麻烦留言提供下 谢谢了!

    //出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!

  • 相关阅读:
    sqlalchemy 查询姿势总结
    sqlalchemy 常用总结
    rsyslog 移植与配置方案介绍
    软件设计随想录
    C语言面对对象设计模式汇编
    关于linux kernel slab内存管理的一点思考
    linux PMBus总线及设备驱动分析
    Linux x86_64 APIC中断路由机制分析
    单板控制领域模型设计与实现
    Linux mips64r2 PCI中断路由机制分析
  • 原文地址:https://www.cnblogs.com/ahjesus/p/2760850.html
Copyright © 2020-2023  润新知