美文网首页
关于 if(xx)和 a==b的判断

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

作者: 沉沉___ | 来源:发表于2019-01-12 13:19 被阅读0次

if 语句

if 语句语法: if (condition) statement1 else statement2

其中的 condition (条件) 可以是任意表达式;而且对这个表达式求值的结果不一定是布尔值。
ECMAScript会自动调用 Boolean() 转换函数将这个表达式的结果转换为一个布尔值。如果对 condition 求值的结果是 true,则执行语法中的 statement1(语句1),如果对 condition 求值的结果是 false,则执行 statement2(语句2)。其中这两个语句即可使一行代码,也可以是一个代码块(以一对花括号括起来的多行代码)。例:

if (i > 25)
alert ("Greater than 25 ."); //单行语句
else {
alert ("Less than or equal to 25 ."); //代码块中的语句
}

不过,业界普遍推崇的最佳实践始终是使用代码块,即使要执行的只有一行代码,因为这样可以消除误解,否则可能让人分不清再不同条件下要执行哪些语句,所以推荐如下写法:

if (i > 25) {
alert ("Greater than 25.");
} else if (i < 0) {
alert ("Less than 0.");
} else {
alert ("Between 0 and 25, inclusive.");
}

a==b 的判断

主要是不同数据类型的a、b进行相等运算时的判断。
1. string == number

结果为 toNumber(a)== b,当a无法转换为number时判断相等为false

"" == 0 //true
" " == 0 //true
"hello" == 0 //false
"hello" == 1 //false
"2" == 2 //true

toNumber

undefined --> NaN
null --> 0
boolean --> true:1,false:0
string --> "abc":NaN,"123":123

2.boolean == (any)

Boolean在相等运算时会转换为数值,true为1,false为0

"" == true //false
"" == false //true
" " == true //false
"hello" == true //false
1 == true //true
0 == false //true
undefind == false //false
undefind == true //false
null == false //false
null == true //false

3.object == number/string

object会试图使用valueOf和toString转换后比较

var obj = {
a: 0,
valeuOf:function(){return 1}

}
obj == 1 //true
[] == 0 //true
[2] == 2 //true

4.null == undefined //true

总结:

做相等运算时,一般倾向于将不同的数据类型都转化为数值,或是转化为相同的数据类型。
  • 如果两个值类型相同,则执行严格相等的运算
  • 如果两个值的类型不同
  1. 如果一个时null,一个是undefined,那么相等
  2. 如果一个是数字,一个是字符串,先将字符串转为数字,然后比较
  3. 如果一个值时true/false则将其转为1/0比较
  4. 如果一个值是对象,一个是数字或字符串,则尝试使用valueOf和toString转换后比较
  5. 其它不想等

相关文章

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

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

  • 2019-05-17

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

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

    if(xx) if后的括号里的表达式会被强制转换为布尔类型 number a = 1if(a){console.l...

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

    if的判断 1.if(number)if后的括号里的表达式会被强制转换为布尔类型 例:当 if(number),0...

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

    if的判断 原理 解密 对于括号里的表达式,会被强制转换为布尔类型 做几道测试题看一看 == 的判断 对于==的判...

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

    if条件判断 if...else 条件判断的语法如下: if (条件){当条件为 true 时执行的代码}else...

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

    if(xx)的判断 对于括号里的表达式,会被强制转换为布尔类型 转换规则是除了下面六个值被转为false,其他值都...

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

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

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

    if(xx)的判断 对于括号里的表达式,会被强制转换为布尔类型 类型 结果 Undefined ...

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

    一、if(xx)的判断 对于if括号里的表达式,会被强制转换为布尔类型 当if括号里面的表达式为Boolean时,...

网友评论

      本文标题:关于 if(xx)和 a==b的判断

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