美文网首页
if(xx)和a==b是怎么判断的

if(xx)和a==b是怎么判断的

作者: 饥人谷_张晓霞 | 来源:发表于2019-03-28 01:29 被阅读0次

1. if(xx)

首先if(表达式),这个括号里是一个表达式,判别表达式是true或false来执行if语句,即会把括号里的表达式强制转换成布尔类型。

以下是几种转换结果。
  • Undefined --> false

  • Null --> false

  • Boolean --> 直接判断true或false

  • Number --> +0,-0,0.00,NaN是false,其他是true

  • String --> 空字符串if("")为false,其他为true,如if(" ")为true,引号中间有个空白符,不为空字符串,所以为true

  • Object --> true ,如if([])为true,if({})true,空数组空对象也为true,

比如

var a=1;

if(a){

console.log(1);

}

这样写其实不怎么严谨,最好是添上条件,如

var a=1;

if(a>0){ // 或者if(a===1),合理运用各种比较运算符,逻辑运算符

console.log(a);

}

2. a==b

== 等号两边会发生类型转换,然后比较它的值

=== 不会发生类型转换,同时比较等号两边的值和类型,都相同时为true,只要一个不同,为false

以下是类型转换的值
  • Undefined --> NaN

  • Null --> 0

  • Boolean --> true为1,false为0

  • String --> "abc"为NaN, "abc11"为11,"123"为123,即字符串中包含数字时转换为相应数字,没有数字时为NaN

以下是判别方法
  • undefined == null //true 这为特殊情况,记住

  • 等号两边如果有布尔值就将其转换为1或0进行比较

  • 等号两边是数字和字符串,先将字符串转换为数字,再进行比较

  • 等号两边如果有对象,会调用其valueOf()方法,再进行比较

需要特别记住的是,"" , " " 转换的值为0,所以

"" == 0 //true

"" == false //true

" " == 0 //true

" " == false //true

还有一个特殊的等式, !" " == false //true

举例

a. 字符串的转换:

"hello" == true //false "hello"转换为NaN ,NaN与任何值比较都为false,包括它自己本身

NaN == NaN //false

"hello" == false //false

b. 布尔值的转换:

true == 1 //true

false == 0 //true

c. 对象的转换:

var obj = {

a:0,

valueOf: function() { return 1 }

}

obj == "[Object Object]" //false 因为写了valueOf方法,所以不等于默认的[Object Object],如果没有写valueOf方法或toString方法, 则obj == "[Object Object"] //true

obj == 1 //true

obj == true //true

该对象调用了valueOf方法,返回值是1, 1==1,1==true,

d. 空数组的转换:

[] == false //true

空数组里有toString()方法,但是并没有定义,它转为数值即不是1也不是0,所以为false

相关文章

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

    1. if(xx) 首先if(表达式),这个括号里是一个表达式,判别表达式是true或false来执行if语句,即...

  • 关于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的判断

    if(xx)的判断 if语句会根据里面的条件中的布尔值进行判断,条件为true执行紧凑后续的语句,条件为fasle...

网友评论

      本文标题:if(xx)和a==b是怎么判断的

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