• 数据的相对比较


    两个等号进行比较时的规律
    1、对象对象 返回值永远是false
    对象包含 数组类 [] 对象类 {}
    {}
    {}
    [][]
    {}
    []
    两个等号左右的值,只有是不同数据类型的时候,才需要进行转化,如果是相同数据类型,就不需要转化

    2、对象字符串
    等号两侧数据类型不同,需要转为相同数据类型
    将对象转为字符串,调用.toString()方法
    {}.toString()-->"[object Object]"
    [].toString()-->""
    {}
    "" "[object Object]""" -->false
    []
    "" ""=="" -->true

    3、对象数字
    第一步将对象转为字符串
    第二步将字符串转为数字
    第三步数字和数字进行比较
    []
    0 --》[].toString()0 -->""0 -->Number("")0-->00 true
    {}0 -->{}.toString()0-->"[object Object]"0 -->Number("[object Object]")0-->NaN==0 false

    4、对象布尔 最终都转为数字进行比较
    第一步将对象转为字符串
    第二步将字符串转为数字
    第三步将布尔转为数字
    第四步数字和数字进行比较
    []
    true
    第一步:[].toString()Number(true) --》""1
    第二步:Number("")1 --> 01
    返回值:false
    {}false
    第一步:{}.toString()
    Number(false)-->"[object Object]"0
    第二步:Number("[object Object]")
    0-->NaN==0
    返回值:false

    5、字符串数字
    将字符串转为数字
    "123"
    1 -- >Number("123")1 --> 1231 false

    6、字符串布尔
    字符串转为数字 布尔转为数字
    "1"
    true Number("1")Number(true) --> 11 true
    "1"!"" Number("1")!Boolean("") --> 1!false --> 1true-->1Number(true) -->11 true

    7、数字==布尔
    布尔转为数字
    true -- 》1
    false --》0

    8、nullundefined true
    null
    =undefined false

    9、null==其他数据类型 永远是false
    undefined == 其他数据类型 永远是false

    10、NaN==NaN 永远是false

    在运算之前,分清楚等号两侧的数据类型
    (1+1)(1+2)
    2
    3
    等号两侧如果有运算,先进行运算,等号两侧是进行最终值的比较

    []![]
    对象
    布尔
    [].toString() --> "" --> Number("") --> 0
    ![]--!Boolean([])-->!true-->false--Number(false)--> 0
    0==0 true

    parseFloat("3.4b")Number("3.4")
    数字
    数字
    3.4=3.4 true

    !{}false
    布尔
    布尔
    !{} -- > !Boolean({})-->!true-->false
    false
    false==false true

    ![]0
    布尔
    数字
    ![]--!Boolean([])-->!true-->false--Number(false)--> 0
    0
    0==0 true

    !([]{})
    !(这个结果取反) !(对象
    对象)!(false) --》true

    [][].toString()
    对象
    字符串
    []-->[].toString()-->""
    [].toString()-->""
    ""=="" true

    {name:123}!false
    对象
    布尔
    {name:123}--》{name:123}.toString()-->"[object Object]"-->Number("[object Object]")-->NaN
    !false-->true-->Number(true)-->1
    NaN==1 false

    1{}
    数字
    对象
    1
    {}--》{}.toString()-->"[object Object]"-->Number("[object Object]")-->NaN
    1==NaN false

    "1"[1]
    字符串
    对象
    "1"
    [1]-->[1].toString()-->"1"
    "1"=="1" true

    1=parseInt("1.2nxskdjsk")
    数字
    =数字
    1===1 true

  • 相关阅读:
    Ruby系列:玩转闭包(Block,Proc,lambda)
    C# 中where关键字【MSDN】
    web应用程序中慎用static变量
    面向对象的javascript(一)
    原型模式 对象深浅复制
    存储过程:异地备份数据库文件
    正则表达式 [笔记]
    连接Oracle数据库代码
    在Eclipse下搭建Android开发环境教程,HelloWord
    Android开发之旅:环境搭建及HelloWorld
  • 原文地址:https://www.cnblogs.com/Juphy/p/6964756.html
Copyright © 2020-2023  润新知