美文网首页
关于条件判断和类型转换

关于条件判断和类型转换

作者: 生锈的螺丝钉阿门 | 来源:发表于2018-07-02 03:19 被阅读0次

问题一:JavaScript的条件判断中,如果条件本身不是一个布尔值,代码可读性较差;但是完全是可以运行的。
先看下下面的代码执行情况:

if("hello"){ //条件是一个字符串
  console.log("hello"); //输出"hello"
}
if(""){  //条件是空字符串
  console.log("empty");//不会输出
}
if(" "){ //条件空格字符串
  console.log("blank"); //输出"blank"
}

解密:对于括号里面的表达式,会被强制转换成布尔类型。

原理

类型 结果
undefined false
null false
number +0,-0,或者NaN为false,其他为true
String 空字符串为false,其他都为true
Object true

问题二:类似"hello == true"的语句应该怎么计算值?
JavaScript在执行比较语句的时候会做强制类型转换,先看看具体的执行情况:

"" == 0  // true
" " == 0  //true
"" == true  //false
"" == false  //true
" " == true  //false
!" " == true  //false
!" " == false  //true
"hello" == true  //false
"hello" == false //true
"0" == true  //false
"0" == false  //true
"00" == false  //true
"0.00" == false  //true

解密:

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

类型 结果
undefined NaN
null 0
boolean true为1,false为0
String "abc"为NaN,"123"为123

toPrimitive
对于Object类型,先尝试使用.valueOf方法获取结果。如果没有定义,在尝试调用.toString方法获取结果。
总结:对于大小判断,JavaScript的处理方式是转换成两个数字进行比较,比较特殊的null==undefined //true;对于普通的类型的转换遵循上面的表格,对于对象的转换要调用valueOf或者toString方法。

相关文章

  • 关于条件判断和类型转换

    问题一:JavaScript的条件判断中,如果条件本身不是一个布尔值,代码可读性较差;但是完全是可以运行的。先看下...

  • Dart中的对象操作符

    ? 条件运算符 as 类型转换 is类型判断 .. 级联操作(连缀) Person ...

  • 类型转换

    js的类型转换分成显示和隐式,显式转换常用类型转换函数进行转换,隐式最多用在条件判断,通常是把字符转为布尔型。类型...

  • 判断

    一、if判断 if(条件){语句}判断条件会强制转换成布尔类型 ○ 注意: 空白字符串" "也为true, []空...

  • js类型转换与四则运算

    js中类型转换有三种情况: ①转换为布尔值 ②转换为数字 ③转换为字符串 类型转换表格 在条件判断时,除了unde...

  • Dart的对象操作符

    Dart中的对象操作符:? 条件运算符 (了解)as 类型转换is 类型判断.. 级联操...

  • 2019-05-17

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

  • 第五章 循环和关系表达式

    加快进度:( for循环 for循环是入口条件循环,在判断条件时会强制转换成bool类型。...

  • JS函数

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

  • js函数

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

网友评论

      本文标题:关于条件判断和类型转换

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