美文网首页
解密类型转换:if(xx)和 a==b的判断

解密类型转换:if(xx)和 a==b的判断

作者: 蔡华鹏 | 来源:发表于2018-05-23 23:46 被阅读0次

解密类型转换:if(xx)和 a==b的判断

正在学习JS函数,感觉很懵,可能是有某个点没有理解,所以导致串联不起来吧!然后准备不看函数了,写一篇关于if(xx)和a==b的判断

首先我们先来说一下相等的概念:

我们知道可以使用==或===判断两个值的相等性,其中区别相信大家清楚,===是严格相等的意思,只需要注意NaN和NaN不等就行了。而使用==的时候,JavaScript会帮我们做类型转换,造成一些匪夷所思的结果,那么使用==的时候会在那些情况下做类型转换,又会换成什么样子呢?

  • 如果两个值类型相同,则执行严格相等的运算
  • 如果两个值的类型不同,那么就好玩了,看下面吧
    1、如果一个是null,一个是undefined,那么相等(可以硬背下来)
    2、如果一个是数字,一个是字符串,先将字符串转位数字,然后在比较
    3、如果一个值是true/false则将其转为1/0比较
    4、如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
    5、其他就不相等了

看着判断if(xx)和a==b比较难记,其实可以总结为三句话:

  • 空字符串是false
  • 其他都是true
  • 对象全是true

觉得没有理解,别慌,看完这个表格你就懂了

if的判断

对于括号里的表达式,会被强制转换为布尔类型:

类型 结果
undefined false
Null false
Boolean 直接判断
Number +0,-0,或者NaN为false,其他为true
string 空字符串为false,其他的都是true
object true

然后看几个题吧:

image
image
看看上面这题应该不难吧,运用上面表格的东西,转换为布尔类型比较,为true就输出为false就没有输出

==的判断
*对于==的判断,JS是怎么处理的?

X Y 结果
null undefined true
Number string X==toNumber(Y)
Boolean (any) toNumber(X)==Y
Object string or Number toprimitive(X)==Y
otherwise otherwise false

toNumber

type Result
Undefined nan
Null 0
Boolean true->1,false->0
String "abc"->NaN,"123"->123

toPrimitive

对于Object类型,先尝试调用valueOf方法获取结果,如果没定义,在尝试调用toString方法获取结果

现在在看下题目吧

image
image
image

这里需要注意的就是遇到取反的时候就是转换成布尔,在进行比较;还有就是undefined==null比较特殊,这是比较死的,记住相等就可以了

在做题的时候打开JS亲自动手,印象会更加深刻

相关文章

  • 解密类型转换:if(xx)和 a==b的判断

    解密类型转换:if(xx)和 a==b的判断 正在学习JS函数,感觉很懵,可能是有某个点没有理解,所以导致串联不起...

  • 2019-05-17

    关于if(xx)和 a==b的判断 if(xx)的判断 括号中的xx会被强制转换为布尔类型,true 或者 fal...

  • 关于 if(xx)和 a==b的判断的总结

    if(xx) 对于if(xx),是把xx转换成boolean在进行判断各类型转换布尔结果: a==b 对于a==b...

  • JS函数

    关于if(xx)和 a==b的判断 if 的判断 对于括号里的表达式,会被强制转换为布尔类型。 结果为 true ...

  • js函数

    关于if(xx)和 a==b的判断if 的判断 对于括号里的表达式,会被强制转换为布尔类型。 结果为 true 的...

  • JavaScript类型转换-关于 if(xx) 和 a==b的

    if(xx) 的判断 对于括号里的表达式,会被强制转换为布尔类型 a=b 的判断 toNumber toPrimi...

  • 2018-01-11

    If(xx) ==的判断 解密 toNumber toPrimitive 对于 Object 类型,先尝试调用 ....

  • 关于if(xx)和 a==b的判断

    if(xx) 经常会遇到if(xx)的判断解析:对于对于括号里的表达式,会被强制转换为布尔类型。 a==b 对于a...

  • 解密类型转换

    if判断解密 对于括号里的表达式,会被强制转换为布尔类型 原理 ==判断解密 toNumber toPrimiti...

  • if(xx)与a==b

    if(xx) -- 括号内返回一个布尔值进行判断格式: a == b "==" -- 进行类型转换,再进行比较,然...

网友评论

      本文标题:解密类型转换:if(xx)和 a==b的判断

      本文链接:https://www.haomeiwen.com/subject/pjwdjftx.html