javascript基础:逻辑运算符

1、&&/||返回能够被转换为布尔值的值

&&操作符不一定返回布尔值true/false,但总是返回一个能转换为布尔值的值,这决定于用于比较的是什么值。

非0数字转为true,数字0转为false,null、undefined转为false,对象、数组、函数表达式、非空字符串转为true,空字符转为false,函数执行时返回计算结果。

注意即使是空数组或不含任何属性的对象都返回true。

含有NaN类型的比较返回NaN。

&&的操作顺序是从左至右,当左边的计算值为false或转换后的值为false时,右边的值计算值将不再比较。

function t(){
  return 0 && -1;
}
console.log(t());

0

上式中,0 && –1逻辑与比较,因为0转换为布尔值为false,因此,-1不再计算比较,只计算左边的值--0。

console.log(function(){} && -1);

-1

特殊情况:

console.log(NaN && -1);

NaN

console.log([] && -1);

-1

如果逻辑与比较左边的运算结果为true,则返回最后一位比较结果。

console.log(true && {} && 0);

0

最后的结果为0,因为0转换为布尔值为false。因此在判断中

if(true && {} && 0)

     alert(‘ok’);

else

     alert(‘fail’);

中,将弹出fail。

2、逻辑运算符在实际中的运用

同行执行多个计算:

fun1() && fun2();

如果fun1运算结果为true,则继续执行fun2,它不计较fun2最后返回的是什么结果。

var aa = aa || 1;
console.log(aa);

1

这利用了||会返回结果的特性。如果aa已定义,则返回aa定义的值,如果没有,则返回数字1。

var a = 1 && [];
console.log(a);

[]

如果一个函数不返回结果,则默认返回undefined。

function Y(){
}
console.log(Y());

undefined

posted @ 2016-02-13 22:40  sumsung753  阅读(151)  评论(0编辑  收藏  举报