JavaScript

JavaScript 知识量:26 - 101 - 483

2.4 操作符><

一元操作符- 2.4.1 -

一元操作符,也被称为一元运算符,这些运算符只需要一个操作数。以下是一些JavaScript的一元运算符:

  • ++:递增运算符。将变量的值增加1。例如:let x = 5; x++; 之后,x的值变为6。

  • --:递减运算符。将变量的值减少1。例如:let x = 5; x--; 之后,x的值变为4。

  • -:负号运算符。返回数字的负值。例如:let x = -5; 之后,x的值变为-5。

  • +:正号运算符。返回数字的正值。例如:let x = -5; x = +x; 之后,x的值变为5。

  • !:逻辑非运算符。将布尔值取反。例如:let x = true; x = !x; 之后,x的值变为false。

注意:上述的一元运算符只能作用于变量,不能直接作用于字面量。例如,-5、+5是合法的,但是!5和++5是不合法的。

位操作符- 2.4.2 -

在JavaScript中,有几种位操作符,这些操作符对二进制数进行操作。以下是JavaScript中的位操作符:

1. &(按位与):如果相对应位上的两个值都为1,则结果为1,否则为0。例如:

var a = 60; // 60 = 0011 1100  
var b = 13; // 13 = 0000 1101  
var c = a & b; // c = 0000 1100 = 12

2. |(按位或):如果相对应位上的两个值中有一个为1,则结果为1,否则为0。例如:

var a = 60; // 60 = 0011 1100  
var b = 13; // 13 = 0000 1101  
var c = a | b; // c = 0011 1101 = 69

3. ^(按位异或):如果相对应位上的两个值不同,则结果为1,否则为0。例如:

var a = 60; // 60 = 0011 1100  
var b = 13; // 13 = 0000 1101  
var c = a ^ b; // c = 0011 0001 = 49

4. ~(按位非):对二进制数进行取反操作。如果二进制位为0,则结果为1,如果二进制位为1,则结果为0。例如:

var a = ~60; // a = -61 = 1100 0011 in binary

5. <<(左移):将二进制数向左移动指定的位数。右侧以0填充。例如:

var a = 60; // 60 = 0011 1100 in binary  
var b = a << 2; // b = 0111 1000 = 48 in binary

6. >>(右移):将二进制数向右移动指定的位数。左侧保持不变。例如:

var a = 60; // 60 = 0011 1100 in binary  
var b = a >> 2; // b = 0011 in binary (the decimal value is equal to the original number divided by 4)

7. >>>(无符号右移):将二进制数向右移动指定的位数。左侧以0填充。无论最高位是0还是1,都将其视为0。例如:

var a = -60; // 无符号二进制表示为 11110110  
var b = 2;  
var c = a >>> b; // c等于 -60 / 4 = -15,无符号二进制表示为 11111111111101100000000000000000 (32位全为1)

布尔操作符- 2.4.3 -

JavaScript中主要有以下几种布尔操作符:

  1. &&(逻辑与):当两侧的操作数都为真(true)时,结果为真。如果任一操作数为假(false),结果为假。例如:(true && true) 返回 true,(true && false) 返回 false。

  2. ||(逻辑或):当两侧的操作数中至少有一个为真时,结果为真。如果两个操作数都为假,结果为假。例如:(true || false) 返回 true,(false || false) 返回 false。

  3. !(逻辑非):该操作符用于翻转操作数的逻辑状态。如果操作数为真,结果为假。如果操作数为假,结果为真。例如:!(true) 返回 false,!(false) 返回 true。

这些操作符通常用于控制语句(如if语句)中,以决定程序的执行路径。例如:

if (condition1 && condition2) {  
  // 当condition1和condition2都为真时,执行此代码块  
}  
  
if (condition1 || condition2) {  
  // 当condition1和condition2中至少有一个为真时,执行此代码块  
}  
  
if (!condition) {  
  // 当condition为假时,执行此代码块  
}

注意:布尔操作符的求值顺序是从左到右。当操作符为&&或||时,如果左边的表达式为真(或当操作符为!时,如果被翻转的表达式为假),那么右边的表达式将不会被执行,因为其结果已经可以确定。这被称为"短路"行为。

算术运算符- 2.4.4 -

JavaScript中有多种算术运算符,以下是其中一些常用的:

  • 加法运算符:+
    例如:var sum = 5 + 3; // sum 等于 8

  • 减法运算符:-
    例如:var difference = 5 - 3; // difference 等于 2

  • 乘法运算符:*
    例如:var product = 5 * 3; // product 等于 15

  • 除法运算符:/
    例如:var quotient = 10 / 2; // quotient 等于 5

  • 取模运算符:%
    例如:var remainder = 7 % 3; // remainder 等于 1

需要注意的是,JavaScript的除法运算符(/)会直接进行浮点数除法,即使两个操作数都是整数,结果也会是浮点数。如果需要进行整数除法,可以使用地板除运算符 Math.floor(),例如 Math.floor(10 / 3) 结果为3。

指数操作符- 2.4.5 -

JavaScript中有一个指数操作符,即 **,用于计算乘方。

例如,要计算2的3次方,可以这样写:

var result = 2 ** 3; // result 将等于 8

这个操作符可以用于任何数字类型,包括整数和浮点数。例如,要计算1.5的2次方,可以这样写:

var result = 1.5 ** 2; // result 将等于 2.25

需要注意的是,当指数操作符的操作数是非整数时,结果可能不会精确。例如,在JavaScript中,1 + 2 的结果并不等于 (0.1 + 0.2) * 10 的结果,尽管它们在十进制数学中是相等的。因此,当使用指数操作符时,可能需要注意浮点数精度问题。

关系操作符- 2.4.6 -

JavaScript中主要有以下几种关系操作符:

1. 等于操作符:==

用于判断两个值是否相等。如果相等返回true,不相等返回false。例如:

var x = 5;  
var y = "5";  
if (x == y) {  
  console.log("x 和 y 是相等的"); // 会输出 "x 和 y 是相等的"  
}

注意:使用==操作符比较的是值,而不是类型。

2. 不等于操作符:!=

用于判断两个值是否不相等。如果不相等返回true,相等返回false。例如:

var x = 5;  
var y = "5";  
if (x != y) {  
  console.log("x 和 y 是不相等的"); // 会输出 "x 和 y 是不相等的"  
}

3. 全等操作符:===

用于判断两个值是否相等,同时比较类型。如果相等返回true,不相等返回false。例如:

var x = 5;  
var y = "5";  
if (x === y) {  
  console.log("x 和 y 是全等的"); // 不会输出任何内容,因为 x 和 y 类型不同,不相等  
}

4. 全不等于操作符:!==

用于判断两个值是否不相等,同时比较类型。如果不相等返回true,相等返回false。例如:

var x = 5;  
var y = "5";  
if (x !== y) {  
  console.log("x 和 y 是全不等的"); // 会输出 "x 和 y 是全不等的"  
}

5. 小于操作符:<

6. 大于操作符:>

7. 小于等于操作符:<=

8. 大于等于操作符:>=

这些操作符用于比较两个值的大小关系。它们返回一个布尔值,表示第一个值是否小于、大于、小于等于或大于等于第二个值。例如:

var x = 5;  
var y = 10;  
if (x < y) {  
  console.log("x 小于 y"); // 会输出 "x 小于 y"  
}

条件操作符- 2.4.7 -

JavaScript中的条件操作符,也称为三元操作符,是根据一个布尔表达式的结果来选择两个值中的一个。它的语法如下:

condition ? value_if_true : value_if_false

其中,condition 是一个布尔表达式,如果它的值为 true,则返回 value_if_true,否则返回 value_if_false。

以下是一个简单的例子:

var age = 15;  
var beverage = (age >= 21) ? "Beer" : "Juice";  
console.log(beverage); // 输出 "Juice"

在这个例子中,根据年龄来判断选择喝啤酒还是果汁。如果年龄大于等于 21,则选择啤酒,否则选择果汁。由于年龄为 15,所以条件表达式的结果为 false,因此选择果汁。

赋值操作符- 2.4.8 -

JavaScript中用于赋值操作的主要有以下几种操作符:

  1. =:这是最简单的赋值操作符,它可以将右侧的值赋给左侧的变量。例如,var a = 10; 将10赋给变量a。

  2. +=:这个操作符是用于累加和赋值的。如果左侧的变量已经有了一个值,它将这个值与右侧的值相加,然后将结果赋值给左侧的变量。例如,var a = 10; a += 5; 将10与5相加,得到15,然后将15赋给变量a。

  3. -=:这个操作符是用于减去的。它将左侧的变量值减去右侧的值,然后将结果赋值给左侧的变量。例如,var a = 10; a -= 5; 将10减去5,得到5,然后将5赋给变量a。

  4. *= 和 /=:这两个操作符是用于乘法和除法的。*=将左侧的变量值与右侧的值相乘,然后将结果赋值给左侧的变量。/=则将左侧的变量值除以右侧的值,然后将结果赋值给左侧的变量。例如,var a = 10; a *= 5; 将10乘以5,得到50,然后将50赋给变量a。

  5. %= :这两个操作符结合了取模(%)和赋值(=)。这个操作符会先对左侧的变量和右侧的表达式进行取模运算,然后将结果赋值给左侧的变量。

逗号操作符- 2.4.9 -

在 JavaScript 中,逗号操作符是一种二元操作符,它接受两个操作数,并且返回第二个操作数。以下是逗号操作符的基本语法:

expr1, expr2

其中,expr1 和 expr2 是要执行的操作数。逗号操作符按照从左到右的顺序依次评估操作数,并返回第二个操作数的值。

以下是一个简单的示例:

let x = 10;  
let y = 20;  
  
let result = (x += 5, y += 10);  
  
console.log(x); // 输出 15,因为 x 增加了 5  
console.log(y); // 输出 30,因为 y 增加了 10  
console.log(result); // 输出 30,因为返回的是第二个操作数的值

在上面的示例中,逗号操作符将 x += 5 和 y += 10 两个表达式连接在一起。首先,x += 5 将 x 的值增加 5,然后 y += 10 将 y 的值增加 10。最后,逗号操作符返回 y += 10 的结果,即 30。

逗号操作符还可以用于在一行中执行多个语句,例如:

let x = 10, y = 20;

在这个示例中,逗号操作符将两个赋值语句连接在一起,将 10 赋值给 x,将 20 赋值给 y。