console.log(1==true)//true
console.log(2==true)//false
console.log(2==false)//false
console.log(Boolean(2))//true
console.log(+true)//1
这么看来如果在比较的时候将boolean转成数字的话,明显1和2不相等?有没有可能将数字转成boolean之后再进行比较呢?
js中是如何判断数字和bool比较的?看起来不是大于0都是true。求细节!!!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
https://developer.mozilla.org...
比较的东西都有啦。
http://www.ecma-international...
这个完美解释了,最权威了。
有种东西,叫类型转换
JavaScript真值/假值的概念
JavaScript中任意的值都可转换为Boolean类型,也就是真值假值的概念。
更详细点说就是,undefined、null、±0、NaN、""(空字符串)都会被转为false,即概念上的假值(falsy value),除此之外的值将被转换为true,称为真值(truthy value)
举例:
真值假值转换规则:
另外,Boolean类型的值可以通过toString()方法转换成String类型的"true"或者"false"
推荐直接查看jquery源码。
str.indexOf("something") != -1将number类型的数字转化为Boolean,在JQuery中,会将数字看成是字符串,调用indexOf(number.firstchar)方法,也就是说,对于0和所有正数,都返回0,其余值返回-1,对上述表达式而言,前者返回true,后者返回false.
另外就是,
==不作类型比较,当类型不同时,会进行转型到相同的类型在做比较。===则表示值和类型都绝对相等。== 是比较运算符。
两个不等的类型进行比较时,会发生类型转换。
具体到本题,数字 和 bool 比较时,会把 true 转为,false 转为 0
所以,true == 1 , false == 0
更多情况,可以参考 https://dorey.github.io/JavaS...
可以通过 Boolean(11)==true 进行比较
!!2
在JavaScript中—— 1的boolean值为true,0的boolean值为false。
也就是说:
而后面的就比较好理解了吧?
但是这里有个坑:
不能这样对照!
下面的将会将Number和Boolean都转换成String!所以是true。