• ==与===的区别(配合数据类型转换)


    1、===:三个等号我们称为等同符,当等号两边的值为相同类型的时候,直接比较等号两边的值,值相同则返回true,若等号两边的值类型不同时直接返回false。

    2、==:两个等号我们称为等值符,当等号两边的值为相同类型时比较值是否相同,类型不同时会发生类型的自动转换,转换为相同的类型后再作比较。

    思考:[] ==![]结果是什么?

    为什么?

    [ ] == [ ] //false,是因为当两边都是相同类型的时候,==我们会对比两边的数据,而[ ]是引用类型,两个分别指向不同的堆内存。

    而[ ] == ![ ]//true ,!的优先级大雨==,所以先运算右边,![ ] == false,这样 “[ ] == ![ ]”相当于“[ ] == false”

    这时候 “==” 中的数据类型不相等,所以首先会先数据类型转换在比较值

    JS的相等操作符判断原则:

    1、如果一个值是对象,另一个值是数字或字符串,则将对象转换为原始值再进行比较。对象通过toString()方法或valueOf()方法转换为原始值。

    2、如果其中一个值是true,则将其转换为1再进行比较。如果其中一个值是false,则将其转换为0再进行比较。

    3、 null与undefined相等

    由此可知,[ ] 相当于 0,! [ ] => false => 0 , 所以 " [ ] == ! [ ] " 相当于 “ [ ] == false” 相当于 “0 == 0” 所以所以所以======》[ ] == ![ ]//true

     还有以下

    false == 'false' // false

    0 == ‘ ’ //true

  • 相关阅读:
    noip2018练习总结
    东方CannonBall (概率DP)
    数论
    逆序对
    USACO5.3 校园网Network of Schools(Tarjan缩点)
    USACO09FEB 改造路Revamping Trails(分层图模板)
    Comet OJ模拟赛 Day1
    Tarjan模板
    NOIP 天天爱跑步(树上差分)
    树上差分
  • 原文地址:https://www.cnblogs.com/chorkiu/p/10381990.html
Copyright © 2020-2023  润新知