Back to blog
Sep 29, 2024
2 min read

JS中特殊操作符用法

js中!、!!、.?、??、??=、的用法和含义

js中!、!!、.?、??、??=、的用法和含义

在 JavaScript 中,!!!.?????= 都是具有特定含义的操作符或语法。下面是它们的用法和含义:

1. ! (逻辑非)

  • 含义! 是一个一元操作符,用于对布尔值取反。如果操作数可以被转换为 true,则结果为 false;反之亦然。
  • 示例
    let x = false;
    console.log(!x); // 输出: true
    
    let y = 0; // 在布尔上下文中,0 被视为 false
    console.log(!y); // 输出: true
    

2. !! (双重否定)

  • 含义!! 常用来将任何类型的值转换为布尔值。第一次 ! 将值转为布尔值并取反,第二次 ! 再次取反,从而得到原始值对应的布尔值。
  • 示例
    let str = "hello";
    console.log(!!str); // 输出: true
    
    let num = 42;
    console.log(!!num); // 输出: true
    
    let emptyObj = {};
    console.log(!!emptyObj); // 输出: true
    
    let nullValue = null;
    console.log(!!nullValue); // 输出: false
    

3. .? (可选链操作符)

  • 含义.? 允许你在访问深层嵌套属性时安全地处理可能存在的 nullundefined。如果在链中的某个点遇到了 nullundefined,表达式会立即返回 undefined 而不是抛出错误。
  • 示例
    let user = {
      name: "Alice",
      address: {
        street: "Main St"
      }
    };
    
    console.log(user?.address?.street); // 输出: "Main St"
    console.log(user?.address?.city); // 输出: undefined
    console.log(user?.profile?.bio); // 输出: undefined
    

4. ?? (空值合并操作符)

  • 含义?? 提供了一种从一组候选值中选择第一个非 null 和非 undefined 的值的方式。如果左侧的操作数是 nullundefined,那么它会选择右侧的操作数。
  • 示例
    let value1 = null;
    let value2 = "default";
    console.log(value1 ?? value2); // 输出: "default"
    
    let value3 = "";
    console.log(value3 ?? "empty"); // 输出: "" (因为空字符串是非 null 和非 undefined 的)
    

5. ??= (空值合并赋值操作符)

  • 含义??= 操作符用于当变量为 nullundefined 时,给变量赋一个新的值。如果左侧的操作数不是 nullundefined,则不会执行赋值。
  • 示例
    let value1 = null;
    value1 ??= "default";
    console.log(value1); // 输出: "default"
    
    let value2 = "existing";
    value2 ??= "fallback";
    console.log(value2); // 输出: "existing" (因为 value2 已经有值)
    

这些操作符在现代 JavaScript 编程中非常有用,可以帮助你编写更简洁和安全的代码。