美文网首页
if(xx)和a==b如何判断?

if(xx)和a==b如何判断?

作者: PhilongHuynh | 来源:发表于2018-04-28 21:38 被阅读0次
  • if(xx)如何做判断的?
  • a==b如何做判断的?

在学习判断true/false的时候我踩了不少坑,主要原因是因为当碰到类似的需求的时候总会从自己认为的去考虑。这种情况下大多数的结果都是错的
所以如果是判断if(xxx)的时候我一般会记住5个falsey值:

  1. 0
  2. NaN
  3. ''
  4. underfined
  5. null

�熟记上述的false值,贯穿你的整个JS学习的过程,当满足上述条件的时候我们都认为是false的,你会很容易判断出来
example:

  if("hello"){
  console.log("hello")
}

显然这种判断条件是不符合5个falsey值的,所以结果正常执行

  if(""){
  console.log('empty')
}   

""为空字符串,判断结果为false值,所以不会接着往下执行!

  if(" ") {
  console.log('blank')
 }

要注意的是" "不为空字符串,所以不满足5个false值,结果还是正常执行的。

if ([0]) {
    console.log('array')
}

虽然看上去这是一个0,但是实际是一个以0为元素的数组,所以结果是正常执行

  if('0.00'){
  console.log('这句话会执行吗?')
}

这样看也是具有迷惑性的,其实'0.00'是字符串,不满足上述的5个false值,结果为正常执行。

a==b 判断

a b 结果
null undefined true
Number String x==Number(y)
Boolean (any) Number(x)==y
Object String/Number toPrimitie(x)==y
otherwise otherwise false
type Result
Undefine NaN
Null 0
Boolean true->1 / false ->0
String "abc"->NaN "123"->123

Number()

type Result
Undefine NaN
Null 0
Boolean true->1 / false ->0
String "abc"->NaN "123"->123

toPrimitie()

type Result
Object 首先找valueof()属性,如果没有定义,然后尝试找toString()属性

example:

  "" ==0  //true

首先执行Number(""),结果为0,最后判断为true

  "  " ==0  //true

首先执行Number(" "),结果为0,最后判断为true

"" ==   true     //false  1 !== 0
 'hello' == true

首先Number("hello")结果为NaN,而Number(true)结果为1,所以互不相等,结果为false

  var obj = {
    a: 0,
    valueOf: funtion(){
      return 1
}
}
obj =="[object object]"
obj ==1
obj == true

首先obj有valueof 方法,且回掉结果为1,1==1 结果为true
同样,true类型结果为1,所以判断结果为true

相关文章

  • if(xx)和a==b如何判断?

    if(xx)如何做判断的? a==b如何做判断的? 在学习判断true/false的时候我踩了不少坑,主要原因是因...

  • if(xx)和a == b如何判断

    if(xx)作为条件判断语句时,在(xxx)为非严格意义上的等式如何判断条件为true还是false?六种数据类型...

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

    关于if(xx)与a==b的判断 简单介绍下if(xx)和a==b的相关判断 if(xx)的判断 1.if(num...

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

    1、if判断 (1)从面试题说说if的数据类型,js如何转换判断 *(2)判断原理: 对于if()里括号的表达式(...

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

    一、 if 的判断 解密 对于括号里的表达式,会被强制转换为布尔类型 原理 答案 string ==> true ...

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

    if(xx) 对于括号内的表达式会被强制转换为布尔类型 转换原理 a==b 在js判断两个变量值是否相等,可以使用...

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

    1.if条件判断语句   JavaScript中流程控制语句是十分重要的的,主要包括:if条件判断语句,for循环...

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

    if(xx)的判断 JavaScript 遇到预期为布尔值的地方(比如if语句的条件部分),就会将非布尔值的参数自...

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

    # if(xx) | 类型 | 判断 | |---------|----------| |undefined|fa...

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

    一、if(xx)的判断 对于括号里的表达式,会被强制转换为布尔值。原理 当if括号内的表达式为Undefined时...

网友评论

      本文标题:if(xx)和a==b如何判断?

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