最近在看书,看到类似于 这样的代码 return a && b
&& 表示逻辑与(and) 当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
这只是它最简单的理解。看简单的应用。
if (a && b) { //do something} 也就是当a 和 b都为真的时候,才会执行 {} 里的语句。
例子1:
var a = 1 && "abc";
alert(a);
var b = 0 && 1;
alert(b);
会弹出两个窗口,第一个是abc,第二个是0 。 对于 var b = 0 && 1; 你可以设置为 var b = null && 1 ; 或undefined , 都会输出假。
例子2:
function func() {
this.hello=function () {alert("hello");};
this.a="testing";
}
var a = new func();
function returnValue() {
this.v="v";
var i=10;
return this.p && a.a;
}
alert(returnValue());
会弹出true ,实际上,对于a>0 和a!= 1来说,都是判断,就会返回布尔值,所以,b得到的必然是布尔值。 如果
&& 表示逻辑与(and) 当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
这只是它最简单的理解。看简单的应用。
if (a && b) { //do something} 也就是当a 和 b都为真的时候,才会执行 {} 里的语句。
对于 a && b 用于函数或者赋值的时候,这时候,应该这么理解,如果a和b均为数值或字符串时,且a为真的时候(不是null,undefined,0,false etc),会返回b(或者返回b的值),否则,会返回一个假 (null,false,undefined之类) ;如果a或b为布尔值或者同时均为布尔值时,会返回一个布尔值。
例子1:
var a = 1 && "abc";
alert(a);
var b = 0 && 1;
alert(b);
会弹出两个窗口,第一个是abc,第二个是0 。 对于 var b = 0 && 1; 你可以设置为 var b = null && 1 ; 或undefined , 都会输出假。
例子2:
function func() {
this.hello=function () {alert("hello");};
this.a="testing";
}
var a = new func();
function returnValue() {
this.v="v";
var i=10;
return this.p && a.a;
}
alert(returnValue());
这时候,会弹出undefined .
例子3:
var a = 1 && 9;
var b = a>0 && a !=1;
alert(b);
会弹出true ,实际上,对于a>0 和a!= 1来说,都是判断,就会返回布尔值,所以,b得到的必然是布尔值。 如果
var b = a>0 && false;
必然b会得到false 这个布尔值。