[转载]https://blog.csdn.net/nayi_224/article/details/80437329
对于需要返回boolean类型数值的地方,比如if判断,逻辑运算符,js对象会默认转换为boolean类型数据。null,undefined,0,”“返回false,其他返回true。
同时,对于||与&&又有这样的特性:
var a = b || c;
b的默认值 | c的默认值 | a的取值 |
---|---|---|
true | true | b |
true | false | b |
false | true | c |
false | false | c |
var a = b && c;
b的默认值 | c的默认值 | a的取值 |
---|---|---|
true | true | c |
true | false | c |
false | true | b |
false | false | b |
根据这两个特性,可以利用||与&&进行赋值。在某些情况下,可以简化代码,甚至是增加可读性。
下面给出的几组代码内的b与c的赋值是等效的。
var b;
if(b != null){
b = b;
}else {
b = 2;
}
var c = c || 2;
var b;
if(b){
b = 1;
}else {
b = 2;
}
var c = (c && 1) || 2;
var b;
if(b){
if(1 == 1){
b = 1;
}else {
b = 2;
}
}else {
b = 3;
}
var c = (c && ((1 == 1 && 1) || 2)) || 3;
var b;
if(2 > 1){
b = 1;
}else if(3 > 1){
b = 2;
}else {
b = 3;
}
var c = ((2 > 1) && 1) || ((3 > 1) && 2) || 3;
var b;
if(2 > 1){
b = 1;
}else if((1 == 1 || 1 == 2) && 3 == 3){
b = 2;
}else {
b = 3;
}
var c = ((2 > 1) && 1) || (((1 == 1 || 1 == 2) && 3 == 3) && 2) || 3;
网友评论