在本教程中,您将学习如何使用 JavaScript 一元运算符来获取单个操作数并执行运算。
JavaScript 一元运算符简介
一元运算符作用于一个值。下表显示了一元运算符及其含义:
一元运算符 | 名称 | 意义 |
---|---|---|
+x | 一元加 | 将值转换为数字 |
-x | 一元减号 | 将值转换为数字并将其取反 |
++x | 增量运算符(前缀) | 值加一 |
--x | 减量运算符(前缀) | 从值中减一 |
x++ | 增量运算符(后缀) | 值加一 |
x-- | 减量运算符(后缀) | 从值中减一 |
一元加号 +
一元加号运算符是一个简单的加号 +
。如果将一元加号放在数值之前,它都不做任何的操作。
let x = 10;
let y = +x;
console.log(y); // 10
当您将一元加运算符应用于非数字值时,它会使用 Number()
函数转换为数字,并且下表中规则进行转换。
价值 | 结果 |
---|---|
布尔值 | false 到0 _ true _1 |
细绳 | 根据一组特定规则转换字符串值 |
目的 | 调用valueOf() 和/或toString() 方法获取要转换为数字的值 |
例如以下语句,使用一元加号运算符将字符串转换 '10'
为数字 10
:
let s = '10';
console.log(+s); // 10
以下示例使用一元加号运算符 +
将布尔值 false
转换为数字 0
和并且 true
转换为 1
。
let f = false;
let t = true;
console.log(+f); // 0
console.log(+t); // 1
0
1
假设您有一个 product
对象,其 toString()
方法如下:
let person = {
name: 'John',
toString: function () {
return '25';
},
};
console.log(+person);
25
在这个例子中,我们在具有 toString() 方法的 person
对象上应用一元加运算符 +
,JavaScript 引擎调用 toString()
方法来获取值 '25'
并将其转换为数字。
下面将 valueOf()
方法添加到 person
对象:
let person = {
name: 'John',
toString: function () {
return '25';
},
valueOf: function () {
return '30';
},
};
console.log(+person);
30
在此示例中,person
对象具有 valueOf()
方法,JavaScript 引擎调用它而不是toString()
方法来获取要转换的值。
一元减号 -
一元减号运算符是一个减号 -
。如果将一元减号运算符应用于数字,它会为此数字取反。例如:
let x = 10;
let y = -x;
console.log(y); // -10
如果将一元减号运算符应用于非数字值,它会使用与一元加运算符相同的规则将该值转换为数字,然后取反该值。
递增/递减运算符
递增运算符有两个加号 ++
,而递减运算符有两个减号 --
。
自增和自减运算符都有两个版本,分别是前缀和后缀。您可以将递增或递减运算符的前缀和后缀版本放在它们所应用的变量之前和之后。
以下示例使用前缀递增运算符将一个变量加一:
let age = 25;
++age;
console.log(age); // 26
它与以下语句等效:
let age = 25;
age = age + 1;
console.log(age); // 26
以下示例使用前缀递减运算符从变量中减一:
let weight = 90;
--weight;
console.log(weight); // 89
它等效于以下语句:
let weight = 90;
weight = weight - 1;
console.log(weight); // 89
当您应用前缀递增或递减时,JavaScript 会在评估语句之前修改变量。例如:
let weight = 90;
weight = ++weight + 5;
console.log(weight); // 96
在这个例子中:
- 首先,执行递增 ++weight,使 weight 变量的值是 91。
- 其次,将 5 添加到 ++weight 返回 96 。
- 第三,将结果分配给左侧的变量 weight。
同样,以下示例使用前缀递减运算符:
let weight = 90;
weight = --weight + 5;
console.log(weight); // 94
在这个例子中:
- 首先,执行递减 --weight,使 weight 变量的值是 89。
- 其次,将 weight 加 5, 返回 94
- 第三,将结果分配给左侧的 weight 变量。
后缀递增或递减运算符会在对语句求值后修改值。例如:
let weight = 90;
let newWeight = weight++ + 5;
console.log(newWeight); // 95
console.log(weight); // 91
- 首先,将 5 加到
weight
(90) 并将结果 95 分配给newWeight
。 - 第二,
weight
在第二条语句完成后给变量加一,weight 变为 91。 - 第三,将
newWeight
和weight
都输出到控制台。
将递增/递减运算符应用于非数字值时,它执行以下步骤:
- 首先,使用与一元加号 + 运算符相同的规则将值转换为数字。
- 然后,将该值加一或减一。
结论
- 一元运算符作用于一个值。
- 一元加号
+
或减号-
将非数字值转换为数字。一元减号转换后的值取反。 - 前缀增量运算符将一个值加一。在评估语句之前修改值。
- 后缀递增运算符将一个值加一。评估语句后修改值。
- 前缀递减运算符从一个值中减一。在评估语句之前修改值。
- 后缀递减运算符从一个值中减一。评估语句后修改值。