javascript - js 中数字和bool的判断
ringa_lee
ringa_lee 2017-04-11 13:13:55
[JavaScript讨论组]
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。求细节!!!

ringa_lee
ringa_lee

ringa_lee

全部回复(8)
天蓬老师

https://developer.mozilla.org...

比较的东西都有啦。

http://www.ecma-international...

这个完美解释了,最权威了。

怪我咯

有种东西,叫类型转换

ringa_lee

JavaScript真值/假值的概念

JavaScript中任意的值都可转换为Boolean类型,也就是真值假值的概念。
更详细点说就是,undefined、null、±0、NaN、""(空字符串)都会被转为false,即概念上的假值(falsy value),除此之外的值将被转换为true,称为真值(truthy value)

举例:

        //情况①:当obj不等于null时,才输出come in
        var obj;
        if(obj !== null){
            console.info("come in");
        }

        //情况②:当obj不等于任何假值时,都将输出come in
        if(obj){
            console.info("come in");
        }

真值假值转换规则:

数据类型 转换为true的值 转换为false的值
String 所有为空的字符串 空字符串""
Number 非零的数值(包括无穷大) 正负0或者NaN
Object 任何对象 nul l
Undefined undefined

另外,Boolean类型的值可以通过toString()方法转换成String类型的"true"或者"false"

PHP中文网

推荐直接查看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 进行比较

阿神
!!null      //>> false
!!undefined //>> false
!!0         //>> false
!!NaN       //>> false
!!""        //>> false

// true
!!"0"    //>> true
!!"some str" //>> true
!![]     //>> true  empty array
!!{}     //>> true empty object
!!2      //>> 非0的数字(负数也是)
!!Infinity    //>> true 无限大

"0"==0   //>> true

// 应用
var id = "0"; // 有时候从ajsx后台取到的数据,某些id字段为字符串表示, 非数字(特别是php) 

if(id){ // true, 原则上没有id为0数据
    // 需求 id为0时, 不取数据, 这里的判断无法满足
    record = getRecord(id);
}
// 增加兼容性
if(+id){ // false +号转为了数字, id非0才进行取数据
    record = getRecord(id);
}
PHP中文网

!!2

伊谢尔伦

在JavaScript中—— 1的boolean值为true,0的boolean值为false。
也就是说:

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

而后面的就比较好理解了吧?
但是这里有个坑:

alert ( 2 === true);  // false
alert ( typeof Number === typeof Boolean);  // true

不能这样对照!
下面的将会将Number和Boolean都转换成String!所以是true。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号