js中为什么||前面的判断为假会执行后面的函数
18浏览 · 2024-04-18 20:23:21
在 JavaScript 中,逻辑或(`||`)运算符的工作原理是短路求值(short-circuit evaluation)。这意味着,如果 `||` 前面的[表达](https://geek.csdn.net/educolumn/1410a16bee391aa5cfc33ba70e3247b7?spm=1055.2569.3001.10083)式为假值(falsy value),那么 JavaScript 将会执行后面的[表达](https://geek.csdn.net/educolumn/1410a16bee391aa5cfc33ba70e3247b7?spm=1055.2569.3001.10083)式。
下面是逻辑或运算符的工作原理:
1. 首先,它会评估 `||` 左边的[表达](https://geek.csdn.net/educolumn/1410a16bee391aa5cfc33ba70e3247b7?spm=1055.2569.3001.10083)式。
2. 如果左边的表达式是真值(truthy value),则整个表达式的结果就是左边的值,右边的表达式将不会被执行。
3. 如果左边的表达式是假值(falsy value),则整个表达式的结果就是右边的值,右边的表达式将会被执行。
这种行为有助于编写简洁的代码,并提供了一种条件赋值的[方式](https://geek.csdn.net/educolumn/0a7fca90472e8d39fd3078246e0b14f3?spm=1055.2569.3001.10083)。当我们需要在某个变量为空或未定义时给它赋一个默认值时,可以使用逻辑或运算符。
例如,在以下示例中,如果变量 `name` 为空或未定义,我们将使用 `defaultName` 给它赋一个默认值:
```javascript
var name = '';
var defaultName = 'John Doe';
// 使用逻辑或运算符给 name 赋默认值
name = name || defaultName;
console.log(name); // 输出: John Doe
在这个示例中,`name` 变量为空[字符串](https://geek.csdn.net/educolumn/ba94496e6cfa8630df5d047358ad9719?dp_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6NDQ0MDg2MiwiZXhwIjoxNzA3MzcxOTM4LCJpYXQiOjE3MDY3NjcxMzgsInVzZXJuYW1lIjoid2VpeGluXzY4NjQ1NjQ1In0.RrTYEnMNYPC7AQdoij4SBb0kKEgHoyvF-bZOG2eGQvc&spm=1055.2569.3001.10083),它被视为假值。因此,逻辑或运算符会执行后面的表达式,将 `defaultName` 赋给 `name`。
总结:逻辑或运算符的短路求值特性使得我们可以根据条件为变量赋予默认值,提高代码的简洁性和可读性。