JS运算符之&&和||

js中有如下图所示的运算符:
这里写图片描述

在这里我们主要讲一下&& 和||的问题 ;这是面试笔试时候可能会运到的问题,在此之前,先了解一下各个运算符的运算先后顺序,如下:
运算符顺序
1 ()
2 !、-、++、– 负号 正号
3 *、/、%
4 +、-
5 <、<=、<、>=
6 ==、!=、===、!==、
7 &&
8 ||
9?: (三元运算符)
10 =、+=、-=、*=、/=、%= (赋值运算符)

在这里要注意一下&&和||的顺序,&&是排在||前面的,这对于某些面试题来说很关键。

接下来,我们要知道一下几个问题:

  • a&&b

    结果是什么?
    如果a 为假 ,则返回 a
    如果a 为真 ,则返回 b

  • a||b

    结果是什么?
    如果 a 为假 则返回b
    如果 a 为真 则返回a

根据上面两个结论以及结合运算符顺序,我们再看一下下面几道面试题:

    var aa  =   0&&1;
    alert(aa); //0
    var bb =  1&&0;
    alert(bb); //0
    var cc =  1&&10;
    alert(cc);//10



----------
 console.log(0||1);  //1
 console.log(1||0);  //1
 console.log(1||5);  //1
 console.log(5||1);  //5


----------
var a = 1 && 2 && 3;
console.log(a); //3
var b = 0 && 1 && 2;
console.log(b); // 0
var c = 1 && 0  && 2;
console.log(c);  // 0


----------
    var a = 0|| 1 || 2;
    console.log(a); //1
    var b = 1|| 0 || 3;
    console.log(b); //1


----------
var a = 3 && 0 || 2;
console.log(a); //2;
var b = 3 || 0 && 2;
console.log(b); // 3
var c = 0 || 2 && 3;
console.log(c); //3

### 逻辑运算符 `&&` `||` 的优先级比较 逻辑运算符 `&&`(逻辑与) `||`(逻辑或)在多种编程语言中具有不同的优先级。一般来说,`&&` 的优先级高于 `||`,这意味着在没有括号的情况下,`&&` 运算会先于 `||` 运算执行[^3]。 #### 优先级规则 在表达式中,如果同时存在 `&&` `||`,则 `&&` 会优先计算。例如: ```c int a = 0, b = 1, c = 2; if (a || b && c) { printf("True\n"); } else { printf("False\n"); } ``` 在此代码中,`b && c` 会首先被计算,因为 `&&` 的优先级高于 `||`。由于 `b && c` 的结果为 `true`,整个表达式的结果也为 `true`[^3]。 #### 短路特性 除了优先级外,`&&` `||` 还具备短路特性。对于 `&&`,如果左侧操作数为 `false`,则右侧操作数不会被计算;对于 `||`,如果左侧操作数为 `true`,则右侧操作数也不会被计算[^4]。 #### 特殊情况 在某些语言(如 Bash Shell)中,`&&` `||` 的优先级是相同的,并且遵循左结合规则。这意味着在没有括号的情况下,最左边的操作会首先被执行[^5]。 ### 示例代码 以下是一个综合示例,展示 `&&` `||` 在不同语言中的优先级行为: #### C语言示例 ```c #include <stdio.h> int main() { int x = 0, y = 1, z = 2; if (x || y && z) { printf("True\n"); // 输出: True } else { printf("False\n"); } return 0; } ``` 在这个例子中,`y && z` 首先被计算,结果为 `true`,因此整个表达式的结果为 `true`[^3]。 #### JavaScript 示例 ```javascript let a = false, b = true, c = true; console.log(a || b && c); // 输出: true ``` 同样地,在此代码中,`b && c` 会被优先计算,结果为 `true`,然后与 `a || true` 结合,最终输出 `true`[^2]。 ### 注意事项 尽管 `&&` 的优先级通常高于 `||`,但在复杂表达式中,使用括号可以明确计算顺序,避免因优先级问题导致的错误[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值