js判断是由含有a节点_JS中关于if(xx)和 a==b的判断

一、JS中关于if(xxx)的判断:

if (xxx) {

}

js是如何处理的?我们先来看几道测试题

//如下代码输出什么?

//题目1

if ("hello") {

console.log("hello")

}

//题目2

if ("") {

console.log("empty")

}

//题目3

if (" ") {

console.log("blank")

}

//题目4

if ([0]) {

console.log('array')

}

//题目5

if('0.00'){

console.log('0.00')

}

以上题目代码的输出结果为:

题目1的输出结果:hello

题目2的输出结果:

题目3的输出结果:blank

题目4的输出结果: array

题目5的输出结果:0.00

即1,3,4,5条件语句中都为 true,2为 false

类型

结果

Undefined

false

Null

false

Boolean

直接判断

Number

+0, −0, 或者 NaN 为 false, 其他为 true

String

空字符串为 false,其他都为 true

Object

true

总结:在if条件语句中,任何一个值,只要它不是 undefined、null、 0、NaN或空字符串(""),那么无论是任何对象,即使是值为假的Boolean对象(P.S 不要将原始布尔值的true和false与Boolean对象的真或假混淆),在条件语句中都为真。

二、JS中关于a == b 的判断:

console.log("" == 0 ) // true

console.log(" " == 0 ) // true

console.log("" == true ) // false

console.log("" == false ) // true

console.log(" " == true )// false

console.log("" == 0 ) // true

console.log(" " == 0 ) //true

console.log("" == true ) //false

console.log("" == false ) //true

console.log(" " == true ) //false

console.log(" " == false) //true

console.log(!" " == true) //false

console.log(!" " == false) //true

console.log("hello" == true) //false

console.log("hello" == false) //false

console.log("0" == true) //false

console.log("0" == false) //true

console.log("00" == false) //true

console.log("0.00" == false) //true

console.log(undefined == null) //true

console.log([0] == 0) //true

var obj = {

a: 0,

valueOf: function(){return 1}

}

console.log(obj == "[object Object]") //false

console.log(obj == 1) //true

console.log(obj == true) //true

从以上结果可总结出:

x

y

结果

null

undefined

true

Number

String

x == toNumber(y)

Boolean

(any)

toNumber(x) == y

Object

String or Number

ttoPrimitive(x) == y

otherwise

otherwise

false

toNumber

type

result

Undefined

NaN

Null

0

Boolean

ture -> 1, false -> 0

String

“abc” -> NaN, “123” -> 123

toPrimitive

对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果。

总结:当比较运算涉及类型转换时, JavaScript 会按以下规则对字符串,数字,布尔或对象类型的操作数进行操作:

1、当比较数字和字符串时,字符串会转换成数字值。 JavaScript 尝试将数字字面量转换为数字类型的值。 首先, 一个数学上的值会从数字字面量中衍生出来,然后这个值将被转为一个最接近的Number类型的值。

2、如果其中一个操作数为布尔类型,那么布尔操作数如果为true,那么会转换为1,如果为false,会转换为整数0,即0。

3、如果一个对象与数字或字符串相比较,JavaScript会尝试返回对象的默认值。操作符会尝试通过方法valueOf和toString将对象转换为其原始值(一个字符串或数字类型的值)。如果尝试转换失败,会产生一个运行时错误。

P.S、注意:当且仅当与原始值比较时,对象会被转换为原始值。当两个操作数均为对象时,它们作为对象进行比较,仅当它们引用相同对象时返回true

小贴士:对于判断a == b首先先往数字方面靠,字符串中空字符串为false,文字字符串为NaN(NaN和任何值不相等,包括其自身),其余的字符串为true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值