美文网首页
关于if()和==

关于if()和==

作者: AuraAura | 来源:发表于2019-05-23 01:23 被阅读0次

if语句是一个比较常用的语句,if语句语法格式为:

if(条件) {
//满足条件则执行
}else {
//否则执行
}

if()括号条件可以为任意表达式,一般为布尔类型,计算结果为true或false;但也可能不为布尔类型,但最终会被强制转化为布尔类型的值。
不同类型强制转换布尔值的结果如下:

类型 结果
undefined false
null false
boolean true or false
number +0,-0,NaN为false,其余为true
string 空字符串为false,其余为true
object true
if("hello") {    非空字符串判断为true
console.log("true")
}

if("") {   空字符串转布尔值为false 不输出
console.log("true")
}

if(" ") {   字符串非空(包含一个空格)为true
console.log("true")
}

if([0]) {   数组为对象,对象转布尔为true
console.log("true")
}

if("0.00") {   非空字符串,为true
console.log("0.00")
}

if(0.00) {   数字0.00转布尔值为false,不输出
console.log("true")
}

所以对于if语句的使用,括号()中的条件一定要使用x==y表达式准确判断,避免使用if(x),if(y),但是==在进行判断时,不同类型也会相互转换。

关于等于==的判断

x y 结果 解释
null undefined true
number string x == toNumber(y) 只要有number转化成number
Boolean (any) toNumber(x) == y 只要有boolean转化成number
Object String or Number toPrimitive(x) == y 将对象转化成字符串或数字
otherwise otherwise false 其他情况为false

大部分能转化成数字,都转换成数字
各类型转化成数字存在以下规则:

类型 数字
undefined NaN
null 0
boolean ture -> 1, false -> 0
string “abc” -> NaN(非数字型字符串), “123” -> 123
"" == 0  //true
" " == 0  //true
"" == true  //false ""为0 true为1 0≠1
"" == false  //true ""为0 false 为0 0=0
" " == true  //false " "为0 true为1 0≠1
!" " == true  //false " "为true 取反为false false≠true
!" " == false  //true
"hello" == true  //false  "hello"转数字为NaN true为1 NaN≠1
"hello" == false // false "hello"转数字为NaN false为0 NaN≠0
"0" == true  //false "0"转成数字为0,true为1 0≠1
"0" == false  //true 同理"0"转成数字为0,false为0 0≠0
"00" == false  //true 同理"00"转成数字为0,false为0 0≠0
"0.00" == false  //true 同理"0.00"转成数字为0,false为0 0≠0
**undefined == null  // true 特殊!谨记!!!!
{} == true  //false true转化成数字为1 空对象没有返回数值
[] == true  //false 同理
var obj = { 
  a: 0, 
  valueOf: function(){return 1} 
} 
obj == "[object Object]"  //对象非空返回数值1,1≠"[object Object]"
obj == 1  //true 返回1 1=1
obj == true  //true true转换成数值为1 1=1

相关文章

  • 关于for,is 和 ==

    看到一个小程序,很容易犯错的地方,pycharm 都提示出错了,但是最后是没问题的 最后打印的是这个,i = 9 ...

  • 关于is和==

    表面上is和==都是用来测试相等性,可是它们却很不一样。 ==操作符测试值的相等性。 is表达式测试对象的一致性...

  • 关于&>和>&

    >&根据后面的参数不同会有不同的结果。 a.当>&后面接文件时,表示将标准输出和标准错误输出重定向至文件。(此时就...

  • 关于if()和==

    if语句是一个比较常用的语句,if语句语法格式为: if()括号条件可以为任意表达式,一般为布尔类型,计算结果为t...

  • 关于演员、关于乐观和关于爱情

    1、关于演员 我们每一个人都是演员,都在为各自的观众们表演,并且渴望获得他们的关注的目光。 在人生这个舞台上,没有...

  • 关于

    关于音乐 关于艺术 关于科学 关于真理 关于角落的书 关于那把吉他和画架 都被关于过去和心 打开于春

  • 关于「井」和「#」

    井,源远流长 井,是一种用来从地表下取水的装置。井的发明使人类在远离河流、湖泊的地方也能坐拥洁净的水源。《周易》曰...

  • 关于EnumerateObjectsUsingBlock和for

    关于EnumerateObjectsUsingBlock和for-in之间的较量 如果我们要遍历一个数组, 上过编...

  • 关于EnumerateObjectsUsingBlock和for

    站在巨人的肩膀上,从前辈那里拿来的经验。 结论1:当只是遍历NSArray的时候使用For-in会比较快速, 推荐...

  • 关于蝶和

    DIH蝶和科技作为一家全球领先的智慧医疗企业,公司不仅是全球智能康复技术及整体解决方案的领军企业,也是全球唯一能提...

网友评论

      本文标题:关于if()和==

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