js中的 || 与 && 运算符详解
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
JavaScript中的逻辑运算符&&和||用于进行布尔逻辑运算,它们在编程中非常常见。这些运算符在进行逻辑判断时,会根据条件的不同返回不同的值。具体来说,&&运算符要求两边的表达式都为真时才返回真,而||运算符只要求其中一个表达式为真即可返回真。下面详细解释这两种运算符的用法和规则。 ### 1. 逻辑与运算符(&&) 逻辑与运算符(&&)用来检查两个操作数的条件是否都为真。只有当两个条件都为真时,整个表达式才返回真。在JavaScript中,这个运算符的应用如下: - 如果第一个操作数为假,则整个表达式的结果必定为假,此时不会评估第二个操作数。 - 如果第一个操作数为真,则会评估第二个操作数,并返回第二个操作数的值。 这一点与C#等其他语言有所不同,在JavaScript中,&&运算符返回的是操作数的值,而不是布尔值true或false。 ### 2. 逻辑或运算符(||) 逻辑或运算符(||)用来检查两个操作数中是否至少有一个条件为真。如果有一个条件为真,则整个表达式返回真。与&&运算符类似,||运算符有如下特性: - 如果第一个操作数为真,则整个表达式的结果必定为真,此时不会评估第二个操作数。 - 如果第一个操作数为假,则会评估第二个操作数,并返回第二个操作数的值。 和&&运算符一样,在JavaScript中,||运算符返回的是操作数的值,而不是布尔值true或false。 ### 3. 优先级 在JavaScript中,&&运算符的优先级高于||运算符。这意味着当表达式中同时包含这两种运算符时,会先计算&&运算符部分,然后再计算||运算符部分。 ### 4. 其他条件的返回值 在JavaScript中,以下条件会被认为是假(falsy): - false - 0(零) - ""(空字符串) - null - undefined - NaN(不是一个数字) 所有其他值都被认为是真(truthy),包括所有对象,以及非零数字。 ### 5. 示例解析 在提供的示例代码中,可以看到: - `console.log(5&&4);` 返回4,因为两边的表达式都为真。 - `console.log(0&&4);` 返回0,因为第一个表达式为假。 - `console.log(5||4);` 返回5,因为第一个表达式为真。 - `console.log(0||0);` 返回0,因为两个表达式都为假。 - `console.log((3||2)&&(5||0));` 返回5,因为先计算2&&5得到5,然后计算3||5得到3,最后计算3||0得到3。 ### 6. 真值表 以下是JavaScript中逻辑运算符的真值表,可以更直观地理解其规则: 对于`&&`(逻辑与): | A | B | A && B | |---|---|--------| | T | T | T | | T | F | F | | F | T | F | | F | F | F | 对于`||`(逻辑或): | A | B | A || B | |---|---|--------| | T | T | T | | T | F | T | | F | T | T | | F | F | F | 其中T代表真(truthy),F代表假(falsy)。 ### 7. 实际应用 在实际开发中,逻辑运算符通常用于条件语句(如if语句)中,进行复杂的条件判断。此外,JavaScript中的一些特性,比如短路求值,使得逻辑运算符在处理默认值、错误处理等方面非常有用。 例如,在无参构造函数中,可以使用`||`来给属性赋默认值: ```javascript function Test(name) { this.name = name || 'mama'; } var mama = new Test(); var mama1 = new Test('mama1'); alert(mama.name); // 输出 "mama" alert(mama1.name); // 输出 "mama1" ``` 在这个例子中,当`Test`函数被调用而不带参数时,`name`参数会被赋予默认值'mama'。 ### 8. 总结 JavaScript中的逻辑运算符&&和||有着独特的行为,它们不仅仅返回布尔值,还会返回表达式的值。通过理解这些运算符的工作方式,可以更好地编写出清晰、高效的JavaScript代码。
- 粉丝: 8
- 资源: 908
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 运用python生成的跳跃的爱心
- 基于 Java 实现的 Socket.IO 服务器 实时 Java 框架.zip
- 基于 Ant 的 Java 项目示例.zip
- 各种字符串相似度和距离算法的实现Levenshtein、Jaro-winkler、n-Gram、Q-Gram、Jaccard index、最长公共子序列编辑距离、余弦相似度…….zip
- 运用python生成的跳跃的爱心
- 包括用 Java 编写的程序 欢迎您在此做出贡献!.zip
- (源码)基于QT框架的学生管理系统.zip
- 功能齐全的 Java Socket.IO 客户端库,兼容 Socket.IO v1.0 及更高版本 .zip
- 功能性 javascript 研讨会 无需任何库(即无需下划线),只需 ES5 .zip
- 分享Java相关的东西 - Java安全漫谈笔记相关内容.zip