js逻辑操作符(!,&&,||)与运算符优先级

来源:互联网 发布:淘宝链接转化微信 编辑:程序博客网 时间:2024/04/29 13:13

js中的逻辑操作符包括!(逻辑非),&&(逻辑与),||(逻辑或),
!逻辑非:对一个操作数的布尔值取反,可通过!!取得操作数的布尔值类型,如下代码(空数组的布尔值为true,空字符的布尔值为false)

console.log(!0);//trueconsole.log(!!0);//falseconsole.log(![]);//falseconsole.log(!![]);//trueconsole.log(!"");//trueconsole.log(!!"");//false

&&逻辑与:二元操作符,第一个操作数的布尔值为true,则值为第二个操作数,第一个操作符的布尔值为false则值为第一个操作数。

var result=true&&3;//3var result=1&&3;//3var result=[]&&'';//''var result=''&&3;//''var result=false&&3;//falsevar result=null&&true;//null

    要注意的是逻辑或是短路操作,如果第一个操作数的布尔值是false,则第二个操作数不被执行,如下代码:

var num=0;var result=false&&num++;console.log(num);//0;

||逻辑或:与逻辑与的操作很相似,但取值刚好相反,当第一个操作数的布尔值为true时,则值为第一个操作数,第一个操作数的布尔值为false时,则值为第二个操作数。同样逻辑或的操作是短路操作,当第一个操作数的布尔值为true时,第二个操作数不会被执行。示例代码:

var result=true||3;//truevar result=1||3;//1var result=[]||'';//[]var result=''||3;//3var result=false||3;//3var result=null||true;//truevar num=0;var result=true||num++;console.log(num);//0

运算符优先级详细参考链接:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

1 0
原创粉丝点击