js 判断变量是否有值返回bool_总结js中数据类型的bool值及其比较

本文总结了JavaScript中数据类型的布尔值转换,介绍如何通过Boolean()函数或两次取非操作判断变量是否有值,并探讨了不同数据类型的比较结果。特别指出,对象即使为空也是布尔值true,而0, '', null, undefined, NaN和false为false。同时,不同的对象、NaN、null与其他值比较的特性也被详细阐述。" 117499401,10542649,Android NDK静态编译实战:从创建到调用静态库,"['Android开发', 'C/C++', 'NDK', '静态库', 'CMake']
摘要由CSDN通过智能技术生成

首先需要知道的是,js中有6个值为false,分别是: 0, '', null, undefined, NaN 和 false, 其他(包括{}, [], Infinity)为true.

可以使用Boolean()函数或是两次取非就能获得对象的布尔值,例如Boolean(undefined)和!!undefined同样能取得布尔值false,

对于0, '', null, undefined, NaN,{}, [], Infinity求布尔值,分别是false false false false false true true true.

因此我们知道的一点是:对象的布尔值是true,即使是对象{}。

另外,不同的对象比较返回false,只有引用相同的对象才返回true,如:

var a = b ={};

console.log(a==b) ; //true

console.log({}=={}); //false

console.log([]==[]); //false,因为[]是object

还需要注意的是:

console.log(new Boolean(false)==false); //true

console.log(new Boolean(true)==true); //true

另外,js中有Boolean对象,例如:通过new Boolean(false)能获得一个初始值为false的布尔对象,但是不能用new Boolean()来获取

对象的布尔值,因为这样我们就new了一个布尔对象,既然是对象,我们获得的就永远是true,所以不幸的是,

if(new Boolean(false)){//这里面的代码一定会执行,即使布尔对象的值是false}. 再次强调,用Boolean()或两次取非来获取布尔值.

如果0, '', null, undefined, NaN,{}, [], Infinity,false, true互相比较(执行"=="运算)会怎么样呢?

functionk(r){

console.log(r,": ", r==false,r==true,r==0,r=='',r==undefined,r==null,r==NaN,r==Infinity,r=={},r==[]);

}

k(true);

k(false);

k(0);

k('');

k(undefined);

k(Infinity);

k(NaN);

k({});

k([]);

由于将null作为参数传给函数时,相当于传入了undefined,所以对于null的检验,需要在修改k函数,即在函数内部让r=null;

从结果(结果就不列出来了)可以得到一些结论:

1、0, '', [], false 互相比较(包括和自身比较)都返回true, 与其他值比较返回false;

2、undefined 和 null 互相比较返回true, 和自身比较也返回true, 其他情况返回false;

3、Infinity只和自身比较返回true;

4、NaN,{}和任意值比较都是返回false;

5、除了true==true以外, true和其他值哪怕非0的数字,非空字符串,非空对象,非空数组都是返回false。

-------------------------------转载注明出处:http://www.cnblogs.com/suspiderweb/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值