js逻辑运算符短路操作

js逻辑运算符有三个:逻辑非!、逻辑与&&、逻辑或||。所谓短路操作就是,
当&&的第一个操作数的值是false时,直接返回第一个操作数的值,不再对第二个操作数进行计算;

   var bar1 = 0&&c;
    console.log('bar1====='+bar1);
    //bar1=====0
    var foo1 = 5&&c;
    console.log('foo1===='+foo1);
    //报c is not defined错误。

当||的第一个操作数的值是true时,直接返回返回第一个操作数的值,不再对第二个操作数进行计算;

var foo = 5||c;
console.log('foo===='+foo);
//foo====5 不报错
var bar = 0||c;
console.log('bar===='+bar);
//报c is not defined错误。

成功的道路并不拥挤,因为能坚持到底的人很少!

JavaScript 中的逻辑运算符主要包括三种:`&&`(逻辑与)、`||`(逻辑或)和 `!`(逻辑非)。这些运算符可以用于布尔值,也可以用于非布尔值,具体行为和用法如下: ### 1. 逻辑与 (`&&`) 逻辑运算符 `&&` 用于检查两个操作数是否都为真。在布尔值的上下文中,如果两个操作数都为 `true`,则返回 `true`,否则返回 `false`。然而,`&&` 运算符的特性是“短路”,即如果第一个操作数能够决定结果,则不会计算第二个操作数。例如,当第一个操作数为 `false` 时,整个表达式的结果必定为 `false`,因此不会继续计算第二个操作数 [^1]。 此外,`&&` 运算符可以返回非布尔值。在这种情况下,它会返回实际的操作数值,而不是布尔值。例如,当使用非布尔值进行比较时,`&&` 会返回其中一个操作数的实际值 [^3]。 ```javascript console.log(true && true); // 输出: true console.log(true && false); // 输出: false console.log(false && true); // 输出: false console.log(false && false); // 输出: false console.log('hello' && 'world'); // 输出: "world" ``` ### 2. 逻辑或 (`||`) 逻辑运算符 `||` 用于检查两个操作数是否至少有一个为真。在布尔值的上下文中,如果两个操作数都为 `false`,则返回 `false`,否则返回 `true`。同样,`||` 运算符也有“短路”特性,即如果第一个操作数为 `true`,则整个表达式的结果必定为 `true`,因此不会继续计算第二个操作数 [^1]。 类似于 `&&`,`||` 也可以返回非布尔值。在这种情况下,它会返回其中一个操作数的实际值 [^3]。 ```javascript console.log(true || false); // 输出: true console.log(false || true); // 输出: true console.log(false || false); // 输出: false console.log('hello' || 'world'); // 输出: "hello" ``` ### 3. 逻辑非 (`!`) 逻辑运算符 `!` 用于取反一个操作数的布尔值。如果操作数为 `true`,则返回 `false`;如果操作数为 `false`,则返回 `true` [^2]。 ```javascript console.log(!true); // 输出: false console.log(!false); // 输出: true console.log(!'hello'); // 输出: false console.log(!0); // 输出: true ``` ### 4. 短路行为的实际应用 由于 `&&` 和 `||` 的短路行为,它们在实际编程中有许多实用的应用场景。例如,可以使用 `&&` 来确保某个对象或属性存在后再访问它,以避免运行时错误。 ```javascript let obj = { name: 'John' }; console.log(obj && obj.name); // 输出: "John" let arr = null; console.log(arr && arr.length); // 输出: null (不会抛出错误) ``` 同样,`||` 可以用于提供默认值。如果左侧的操作数为假值(如 `null`、`undefined`、`0`、`''`、`NaN` 或 `false`),则右侧的操作数将被返回并用作默认值。 ```javascript let value = null; let defaultValue = 'default'; console.log(value || defaultValue); // 输出: "default" ``` ### 5. 总结 JavaScript 中的逻辑运算符 `&&`、`||` 和 `!` 不仅可以用于布尔值,还可以用于非布尔值。它们的短路行为使得在实际编程中能够更灵活地处理各种情况,例如提供默认值或防止访问未定义的对象属性 。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值