练习题

首先来做几个题目:

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);

不知道答案的同学可以去控制台里面输出答案看一看。

其中第一题,因为foundtrue,则接下来要对someUndefinedVariable这个变量求值,但是未定义,因此会报错,第二题foundfalse,则接下来要对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)trueobjectundefinedNaNnull,那么都返回第一个操作数。

一般 ||用来处理给变量未赋值或设置初始值的情况:

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一直进行下去

苹果小萝卜
5.1k 声望356 粉丝

Github: [链接]