返回

JavaScript 这些骚操作符了解一下,这可真不是一般的骚

前端

JavaScript 奇怪的操作符(一)——感叹号、问号、逻辑运算符、置位运算符

JavaScript 作为一门强大的脚本语言,除了我们常见的算术运算符、关系运算符、逻辑运算符等基础操作符之外,还有一些比较少见的,但是用好了却非常强大的骚操作符,本文将为大家介绍其中几种。

一、感叹号(!)

感叹号在 JavaScript 中有两种用法:

  1. 取反运算符:感叹号可以对一个值进行取反运算,即将 true 变成 false,false 变成 true。

    console.log(!true); // false
    console.log(!false); // true
    
  2. 一元运算符:感叹号还可以作为一元运算符,将一个值转换为布尔值。

    console.log(!!"hello"); // true
    console.log(!!""); // false
    

二、问号(?)

问号在 JavaScript 中有两种用法:

  1. 条件运算符:问号可以作为条件运算符,根据一个条件来选择两个值中的一个。

    const age = 18;
    const message = (age >= 18) ? "你已经成年了" : "你未成年";
    console.log(message); // "你已经成年了"
    
  2. 可选链操作符:问号还可以作为可选链操作符,用来访问可能不存在的对象属性或方法。

    const user = {
      name: "John",
      age: 30,
    };
    
    console.log(user?.name); // "John"
    console.log(user?.address?.city); // undefined
    

三、逻辑运算符

JavaScript 中有三个逻辑运算符:

  1. 与运算符(&&):与运算符将两个值进行逻辑与运算,只有当两个值都为 true 时,结果才为 true。

    console.log(true && true); // true
    console.log(true && false); // false
    console.log(false && true); // false
    console.log(false && false); // false
    
  2. 或运算符(||):或运算符将两个值进行逻辑或运算,只要有一个值为 true,结果就为 true。

    console.log(true || true); // true
    console.log(true || false); // true
    console.log(false || true); // true
    console.log(false || false); // false
    
  3. 非运算符(!):非运算符将一个值进行逻辑非运算,将 true 变成 false,false 变成 true。

    console.log(!true); // false
    console.log(!false); // true
    

四、置位运算符

JavaScript 中有六个置位运算符:

  1. 左移运算符(<<):左移运算符将一个值向左移动指定位数,相当于乘以 2 的指定次方。

    console.log(1 << 2); // 4
    console.log(10 << 3); // 80
    
  2. 右移运算符(>>):右移运算符将一个值向右移动指定位数,相当于除以 2 的指定次方。

    console.log(10 >> 2); // 2
    console.log(100 >> 3); // 12
    
  3. 无符号右移运算符(>>>):无符号右移运算符将一个值向右移动指定位数,但不会改变符号位。

    console.log(-10 >>> 2); // 1073741822
    console.log(-100 >>> 3); // 268435456
    
  4. 与运算符(&):与运算符将两个值进行位与运算,结果为两个值的二进制位都为 1 的位。

    console.log(10 & 5); // 0
    console.log(11 & 13); // 9
    
  5. 或运算符(|):或运算符将两个值进行位或运算,结果为两个值的二进制位有一个为 1 的位。

    console.log(10 | 5); // 15
    console.log(11 | 13); // 15
    
  6. 异或运算符(^):异或运算符将两个值进行位异或运算,结果为两个值的二进制位不相同的位。

    console.log(10 ^ 5); // 15
    console.log(11 ^ 13); // 6
    

结语

以上便是 JavaScript 中一些比较少见的,但是用好了却非常强大的骚操作符,希望大家能够灵活运用这些操作符,写出更加简洁、优雅的代码。