练习题
首先来做几个题目:
var found = true;
var result = (found && someUndefinedVariable);
console.log(result);
var found = false;
var result = (found || someUndefinedVariable);
console.log(result);
var result = (1 && 2);
console.log(result);
var result = (0 || {a: 1});
console.log(result);
不知道答案的同学可以去控制台里面输出答案看一看。
其中第一题,因为found
为true
,则接下来要对someUndefinedVariable
这个变量求值,但是未定义,因此会报错,第二题found
为false
,则接下来要对someUndefinedVariable
这个变量求值,同样未定义,也会报错。第三题输出2
,第四题输出0
;
&&
的用法总结
当有个操作数不是布尔值的情况时,逻辑与不一定会返回布尔值:
当第一个操作数为
对象
时,则返回第二个操作数;当第二个操作数为
对象
时,则只有在第一个操作数的求值结果为true的情况下才会返回该对象;如果两个操作数都是对象,则返回第二个操作数;
如果有一个操作数是
null
,则返回null
;如果有一个操作数是
NaN
,则返回NaN
;如果有一个操作数是
undefined
,则返回undefined
.
简便的记忆方法,当第一个操作数的求值为true
时。包括num不为0
,str不为空
,true
,object
,返回的都是第二个值。当第一个操作数求值为false
时,则会返回第一个操作数。
||
的用法总结
如果第一个操作数是
对象
,则返回第一个操作数
;如果两个操作数都是
对象
,则返回第一个操作数
;如果两个操作数都是
null
,则返回null
;如果两个操作数都是
NaN
,则返回NaN
;如果两个操作数都是
undefined
,则返回undefined
;如果第一个操作数的求值结构为
false
,则返回第二个操作数
;
简便的记忆方法,第一个操作符是原始类型的str(且不为空)
或num(且不为0)
或true
或object
或undefined
或NaN
或null
,那么都返回第一个操作数。
一般 ||
用来处理给变量未赋值或设置初始值的情况:
function(name) {
var _name = name || 'XRne';
}
//当变量name未赋值的时候,默认的值为`XRene`。
script.onload = script.onreadystatechange = function(cb) {
if(!this.readState || /^complete|loaded$/.test(this.readtState)) {
cb();
}
}
//FF和IE下判断script加载的情况,并设置回调函数。
A || B || C .....
//当A不满足,判断B,B不满足,判断C一直进行下去
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。