javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > js单目运算符、双目运算符和多目运算符

Javascript中的单目运算符、双目运算符和多目运算符操作大全

作者:长城2024

文章详细介绍了JavaScript中的单目运算符、双目运算符和三元运算符,并提供了每个运算符的示例和陷阱规避方法,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

        在 JavaScript 中,运算符根据其操作数(即参与运算的变量或值)的数量可以分为单目运算符、双目运算符和多目运算符。这些名称的由来与运算符所需操作数的个数相关。

一、单目运算符(Unary Operator)

定义‌:单目运算符是指只需要一个操作数的运算符。这类运算符通常作用于一个变量或值。

命名由来‌:"单目"中的"目"指的是操作数,"单"表示只有一个操作数。例如:

示例‌:

let x = 5;
console.log(-x); // 输出 -5
console.log(++x); // 输出 6
console.log(!true); // 输出 false

二、双目运算符(Binary Operator)

定义‌:双目运算符是指需要两个操作数的运算符。这类运算符通常作用于两个变量或值。

命名由来‌:"双目"中的"目"同样指的是操作数,"双"表示有两个操作数。例如:

示例‌:

let a = 10;
let b = 5;
console.log(a + b); // 输出 15
console.log(a > b); // 输出 true
console.log(a && b); // 输出 5(因为 a 和 b 都为真)

三、多目运算符(Ternary Operator)

定义‌:多目运算符是指需要三个或三个以上操作数的运算符。在 JavaScript 中,最典型的多目运算符是三元运算符。

命名由来‌:"多目"中的"目"指的是操作数,"多"表示有多个操作数。三元运算符是唯一一个需要三个操作数的运算符,其结构为 条件 ? 表达式1 : 表达式2

示例‌:

let age = 20;
let status = (age >= 18) ? "成年人" : "未成年人";
console.log(status); // 输出 "成年人"

在这个例子中,age >= 18 是条件表达式,"成年人" 是条件为真时的返回值,"未成年人" 是条件为假时的返回值。

总结

  • 单目运算符‌:只需要一个操作数,如 ++x-x
  • 双目运算符‌:需要两个操作数,如 x + yx > y
  • 多目运算符‌:需要三个操作数,如 x ? y : z(三元运算符)。

这些名称的由来直观地反映了运算符所需操作数的个数,便于理解和记忆。

四、8个多目运算符示例详细解析

1. 基本条件赋值

let age = 20;
let status = age >= 18 ? "成年人" : "未成年人";

解析‌:

2. 嵌套条件判断

let score = 85;
let grade = score >= 90 ? "A" : score >= 80 ? "B" : score >= 70 ? "C" : "D";

解析‌:

3. 条件函数调用

let isLoggedIn = true;
let message = isLoggedIn ? console.log("欢迎回来") : console.log("请先登录");

解析‌:

4. 对象属性设置

let user = {
    name: "张三",
    isActive: true,
    status: user.isActive ? "活跃用户" : "非活跃用户"
};

解析‌:

5. 数组元素处理

let numbers = [1, 2, 3, 4, 5];
let result = numbers.map(n => n > 3 ? n * 2 : n);

解析‌:

6. 条件返回值

function getMax(a, b) {
    return a > b ? a : b;
}

解析‌:

7. 复杂条件表达式

let price = 150;
let discount = price >= 200 ? 0.2 : price >= 100 ? 0.1 : 0;
let finalPrice = price * (1 - discount);

解析‌:

8. 条件赋值与默认值

let userName = null;
let displayName = userName || "访客";
let greeting = displayName ? `你好, ${displayName}!` : "欢迎访问";

解析‌:

        三目运算符的优势在于其简洁性,能够用一行代码实现简单的条件逻辑。它特别适合用于赋值、返回值和简单的条件判断场景。然而,过度嵌套会使代码难以阅读,因此在使用时应保持适度。

五、陷阱规避

        JavaScript 中的单目、双目和多目运算符在使用时存在多种陷阱,主要包括以下几类:

1、单目运算符陷阱

‌        自增自减运算符的前置与后置区别‌:++a 和 a++ 的执行顺序不同,前置运算符先增加再使用变量值,后置运算符先使用再增加。例如在表达式中 let a = 1; let b = ++a; 会使 b 的值为 2,而 let c = a++; 会使 c 的值为 1。

‌        一元运算符的类型转换‌:一元加法运算符 + 会尝试将操作数转换为数字,如果转换失败则返回 NaN。例如 +'abc' 的结果是 NaN。

2、双目运算符陷阱

 ‌       加法运算符的类型混淆‌:加法运算符 + 既可以进行数学加法,也可以进行字符串拼接。当操作数中至少有一个是字符串时,JavaScript 会将另一个操作数也转换为字符串。例如 1 + "2" 的结果是 "12" 而不是 3

‌        运算符优先级问题‌:不同运算符有不同的优先级,可能导致意外的结果。例如 2 ** 3 * 2 会先计算幂运算再计算乘法,结果为 16。在逻辑运算符中,&& 的优先级高于 ||

 ‌       浮点数精度问题‌:由于 JavaScript 使用 IEEE 754 标准,浮点数运算可能出现精度误差。例如 0.1 + 0.2 的结果不是 0.3,而是 0.30000000000000004

 ‌       比较运算符的隐式类型转换‌:使用宽松相等 == 时,JavaScript 会进行类型转换,可能导致意外结果。例如 0 == false 为 true"" == false 为 true

3、多目运算符陷阱

‌        三目运算符的可读性问题‌:三目运算符嵌套使用时容易导致代码难以理解。例如 condition ? (a > b ? a : b) : c 过于复杂时应简化。

 ‌       逻辑运算符的返回值特性‌:逻辑运算符 && 和 || 不总是返回布尔值,而是返回实际参与运算的值。例如 0 || "hello" 会返回字符串 "hello"

 ‌       条件判断逻辑错误‌:在使用逻辑或运算符 || 连接多个"不等于"条件时,可能导致判断始终为真。例如 if (a != 1 || a != 2) 会始终为真。

4、通用陷阱与规避方法

‌        类型转换陷阱‌:JavaScript 的隐式类型转换机制可能导致意外结果。建议使用严格相等 === 而非宽松相等 ==

 ‌       空值处理陷阱‌:在处理 null 和 undefined 时,它们的比较行为特殊。null == undefined 为 true,但 null === undefined 为 false

 ‌       数组与对象的转换陷阱‌:数组参与运算时会先转换为字符串,例如 [1,2] + [3,4] 会得到 "1,23,4"

 ‌       字符串拼接与数学运算混淆‌:加法运算符在涉及字符串时会进行拼接而非数学运算,需要注意操作数类型。

        避免这些陷阱的关键在于理解运算符的特性和优先级,使用显式类型转换,以及在复杂逻辑中使用清晰的代码结构。

到此这篇关于Javascript中的单目运算符、双目运算符和多目运算符操作大全的文章就介绍到这了,更多相关js单目运算符、双目运算符和多目运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文