点击跳转原文
js中逻辑运算符在开发中可以算是比较常见的运算符了,主要有三种:逻辑与&&、逻辑或||和逻辑非!。
当&&和|| 连接语句时,两边的语句会转化为布尔类型(Boolean),然后再进行运算,具体的运算规则如下:
1.&&
注意:当数值参与逻辑与运算时,结果为true,那么会返回的会是第二个为真的值;如果结果为false,返回的会是第一个为假的值。
2.||
注意:当数值参与逻辑或运算时,结果为true,会返回第一个为真的值;如果结果为false,会返回第二个为假的值;
3.!
3.1当条件为false时,结果为true;反之亦然。
上代码说明:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
console.log( 5 && 4 );//当结果为真时,返回第二个为真的值4
console.log( 0 && 4 );//当结果为假时,返回第一个为假的值0
console.log( 5 || 4 );//当结果为真时,返回第一个为真的值5
console.log( 0 || 0 );//当结果为假时,返回第二个为假的值0
console.log((3||2)&&(5||0));//5
console.log(!5);//false
|
补充:逻辑与的优先级是高于逻辑或的;
比如console.log(3||2&&5||0),会先算2&&5的值为5,然后再3||5—-3,最后再3||0—-3,所以最终结果为3.
补充
转换规则:
零为false;
其他网友的补充
今天复习js继承的时候发现了一个问题,先上代码了
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
window.onload = function() {
varmama,
mama1,
test = function(name) {
debugger;
this.name = name || 'mama';
};
debugger;
mama = newtest();
mama1 = newtest("mama1");
alert(mama.name);//name = mama
alert(mama1.name);// name = mama1
}
|
|
1
2
3
4
|
varb, c, d;
b = true|| 0;//b=true;
c = false|| 0;//c=0;
d = 1 || 0;//d=1;
|
换成别的呢?
|
1
2
3
4
|
varb, c, d;
b = 1-1 || 1+1; //b=2
c = function() { returnundefined } || function() { return1};//c=function();
d = c();//d=undefined
|
|
1
2
3
4
|
varb, c, d;
b = 1-1 || 1+1; //b=2
c = function() { return1 } || function() { returnundefined};//c=function();
d = c();//d=1
|
|
1
|
b = {} || { a: 1, getA: function() { returnthis.a}}; //b=object
|

|
1
2
3
|
varb, c, d;
b = { a: 1, getA: function() { returnthis.a } } || {}; //b=object
c = b.getA();//c=1;
|
逻辑与 && : var a = 表达式1 && 表达式2
表达式1 表达式2 a取值
例如
|
1
|
b = (1 + 1, 2 + 2, 3 + 3);//b=6;
|
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224055.html原文链接:https://javaforall.net
