仔细看看Javascript中的逻辑与(&&)和逻辑或(||)
2013-08-28 15:23
316 查看
学过Java和C的人,都知道逻辑与(&&)和逻辑或(||),他们都是短路运算符,也就是说,对于&&来说,只要左边的操作数是false,它就不会再去判断右边的操作数是true还是false了,因为这个时候已经知道整个表达式的值就是false了;同理对于||来说,只要左边的操作数是true,它也不会再去计算右边的操作数了。
对于Java和C而言,&&和||的返回值不是true就是false,但是Javascript却不是这样的,如果你认为Javascript也是返回true或者false的话,请看下面的小例子:1. 先来看看逻辑与&&
var a = false;
var b = a && true; // b=false
----------------------------------
var a = 0;
var b = a && true; //b=0
----------------------------------
var a = null;
var b = a && true; //b=null
2. 再来看逻辑或||
var a = false;
var b = a || true; // b=true
----------------------------------
var a = 0;
var b = a || 500; //b=500
----------------------------------
var a = null;
var b = a || "xyz"; //b="xyz"
现在我们来解释一下为什么会是怎样的:
1. Javascript本身是弱类型的语言,也就是说一个变量的类型是不固定的,是在运行时,根据具体的变量值来决定的。
2. Javascript中的Boolean值,有这样的类型转化规律:
2.1 对于数字而言,除0和NaN可以被转成false,其他的数字可以被转成true;
2.2 对于字符串而言,空字符串("")可以被转成false,非空的字符串都可以被转成true;
2.3 对于对象而言,null的对象可以被转成false,非null的对象可以被转成true;
2.4 对于null和undefined,都会被转成false。
3. 在if等需要Boolean值的上下文时,Javascript会自动执行上一点中所提到的类型转化。
现在大家明白了吗?
相关文章推荐
- 仔细看看Javascript中的逻辑与(&&)和逻辑或(||)
- 仔细看看Javascript中的逻辑与(&&)和逻辑或(||)
- (转)JavaScript中的逻辑运算的返回值(逻辑与&&,逻辑或||,逻辑非!)
- JavaScript基础 逻辑运算与或非 && || !
- JavaScript基础 逻辑运算与或非 && || !
- javascript逻辑(&& ||)运算
- JavaScript中的逻辑运算的返回值(逻辑与&&,逻辑或||,逻辑非!)
- javascript-逻辑与(&&)逻辑或(||)
- JavaScript Boolean(逻辑)对象
- javascript && || 陷阱 javascript 逻辑与、逻辑或
- javascript的||和&&逻辑运算
- Javascript-逻辑判断或(&&)练习
- Using setJavaScriptEnabled can Introduce XSS Vulnerabilities into&
- javascript “||”、“&&”的灵活运用
- 看看比尔·盖茨在关注什么
- "爱说说"技术原理:前后台参数约定及逻辑代码(三)
- 借助 SublimeLinter 编写高质量的 JavaScript & CSS 代码
- Notes On <Pro JavaScript with MooTools> - 02
- 说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
- JSON & JavaScriptSerializer序列化