js与运算符和或运算符的妙用


在JavaScript中,与(`&&`)和或(`||`)运算符不仅仅是用于逻辑判断,它们还可以被巧妙地用于控制代码的流程和执行更简洁的表达式。这里介绍一些它们的妙用:

### 与运算符(`&&`)的妙用

1. **短路效应**:如果第一个操作数为`false`,则不会执行或评估第二个操作数。这可以用于条件性地执行代码。


   const value = someCondition && someFunction(); // 如果someCondition为真,则执行someFunction(),否则value为false
   

2. **默认值**:可以用来给变量提供默认值,如果变量为假值(如`null`、`undefined`、`0`、`""`、`NaN`、`false`),则使用另一个值。


   const value = someVariable || 'default'; // 如果someVariable为假值,则value为'default'
   

注意:虽然这个例子通常与`||`一起使用,但提到`&&`时,我们可以反其道而行之,通过确保前面为`true`,然后`&&`后面提供真实值。

3. **链式调用**:在确认对象存在的情况下进行链式调用。


   const result = obj && obj.property && obj.property.method();
   

### 或运算符(`||`)的妙用

1. **默认值**:如之前所述,`||`常用于为变量或表达式提供默认值。


   const value = someVariable || 'default';
   

2. **条件赋值**:根据条件为真或假,给变量赋不同的值。


   let result = condition ? 'trueValue' : 'falseValue';
   // 也可以使用 || 和 && 简化
   let result = condition && 'trueValue' || 'falseValue';
   // 注意:这种方式在某些情况下可能不如三元运算符直观或安全,特别是当condition是可能为假值的对象时。
   

3. **函数参数默认值**:在函数调用时,如果未提供某些参数,可以使用`||`为这些参数提供默认值。


   function doSomething(arg = arg || 'default') {
     // 注意:这里的默认值直接在参数定义中给出更为常见和清晰
     // 但这里演示了如何使用||
     console.log(arg);
   }
   doSomething(); // 输出: 'default'
   

**总结**:`&&`和`||`在JavaScript中的妙用主要依赖于它们的短路特性,这允许我们在不牺牲代码可读性的情况下,写出更简洁、更高效的代码。然而,在使用这些特性时,需要注意它们的逻辑和潜在的副作用,以确保代码的正确性和健壮性。