js中的逻辑与(&&)和逻辑或(||)以及==和===的区别

&&和||运算符:

在js中写出如下的答案 :

var a = 2;
var b = 3;
var andflag = a && b ;
var orflag = a || b;

问andflag 和orflag 分别是什么?

起初我认为: andflag 和orflag 的值都为 true; 毕竟 && 和 || 都是求Boolean ,后来发现,我错了。

答案应该是 andflag = 3,orflag = 2;

原因是这样的:

在运算过程中,首先js 会将 && 和|| 两边的值转成Boolean 类型,然后再算值 ,&&运算如果返回true,则取后面的值,如果|| 返回true,则取前面的值 , 而其中数值转换成boolean 的规则 是:

对象、非零整数、非空字符串返回true,

其它为false ;

a && b 的运算就是 :因为 a 和 b全是非零整数,所以 a 和 b 也就是true ,而 true && true 返回 true ,则取后面的b ,同理 a 和b 全是非零整数,a 和b 全是true ,则true || true 返回 true ,取|| 前面的值 也就是2;

同样:该逻辑运算符支持短路原则:

如 var a = “” || null || 3 || 4 —-> var a = fasel || false || true || true 结果为true 则返回第一个true,即是3

var b = 4 && 5 && null && 0 ——> var b = true && true && false && false 结果是false 则返回第一个false 即是null .

转自:http://blog.csdn.net/xiaoshuode/article/details/51612423

==,!=和===,!

var num = 1;
var str = '1';
var test = 1;

test == num   //true 相同类型 相同值
test === num  //true 相同类型 相同值
test !== num  //false test与num类型相同,其值也相同, 非运算肯定是false

num == str   //true  把str转换为数字,检查其是否相等。
num != str   //false  == 的 非运算
num === str  //false  类型不同,直接返回false
num !== str  //true   num 与 str类型不同 意味着其两者不等 非运算自然是true

== 和 != 比较若类型不同,先偿试转换类型,再作值比较,最后返回值比较结果 。


=== 和 !== 只有在相同类型下,才会比较其值。

转自:http://www.cnblogs.com/liluping860122/p/3539291.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值