JavaScript 一元运算符详解

摘要: 本教程将教你如何使用 JavaScript 一元运算符,它接受一个操作数并执行一个操作。

JavaScript 一元运算符简介

一元运算符作用于单个值。下表显示了一元运算符及其含义

一元运算符名称含义
+x一元加号将值转换为数字
-x一元减号将值转换为数字并取反
++x自增运算符(前缀)将值加一
–x自减运算符(前缀)将值减一
x++自增运算符(后缀)将值加一
x–自减运算符(后缀)将值减一

一元加号 (+)

一元加号运算符是一个简单的加号 (+)。如果将一元加号放在数字值之前,它不会做任何事情。例如

let x = 10;
let y = +x;

console.log(y); // 10Code language: JavaScript (javascript)

当你将一元加号运算符应用于非数字值时,它会使用 Number() 函数按照下表中的规则执行数字转换

结果
布尔值false 转换为 0true 转换为 1
字符串根据一组特定规则转换字符串值
对象调用 valueOf() 和/或 toString() 方法以获取要转换为数字的值

例如,以下代码使用一元加号运算符将字符串 '10' 转换为数字 10

let s = '10';
console.log(+s); // 10Code language: JavaScript (javascript)

以下示例使用一元加号运算符 (+) 将布尔值转换为数字,false 转换为 0true 转换为 1

let f = false,
    t = true;

console.log(+f); // 0
console.log(+t); // 1Code language: JavaScript (javascript)

输出

0
1

假设你有一个 product 对象,它具有以下 toString() 方法

let person = {
  name: 'John',
  toString: function () {
    return '25';
  },
};

console.log(+person);
Code language: JavaScript (javascript)

输出

25

在这个例子中,我们将一元加号运算符 (+) 应用于 person 对象,该对象具有 toString() 方法,JavaScript 引擎会调用 toString() 方法以获取值 ('25') 并将其转换为数字。以下代码将 valueOf() 方法添加到 person 对象中

let person = {
  name: 'John',
  toString: function () {
    return '25';
  },
  valueOf: function () {
    return '30';
  },
};

console.log(+person);
Code language: JavaScript (javascript)

输出

30

在这个例子中,person 对象具有 valueOf() 方法,JavaScript 引擎会调用它而不是 toString() 方法以获取要转换的值。

一元减号 (-)

一元减号运算符是一个单一的减号 (-)。如果你将一元减号运算符应用于数字,它会取反该数字。例如

let x = 10;
let y = -x;

console.log(y); // -10Code language: JavaScript (javascript)

如果你将一元减号运算符应用于非数字值,它会使用与一元加号运算符相同的规则将该值转换为数字,然后取反该值。

自增/自减运算符

自增运算符有两个加号 (++),而自减运算符有两个减号 (--)。

自增和自减运算符都有两个版本:前缀和后缀。将前缀和后缀版本的自增或自减运算符分别放在要应用它们的变量之前和之后。

以下示例使用前缀自增运算符将变量加一

let age = 25;
++age;

console.log(age); // 26Code language: JavaScript (javascript)

它等效于以下代码

let age = 25;
age = age + 1;
console.log(age); // 26Code language: JavaScript (javascript)

以下示例使用前缀自减运算符将变量减一

let weight = 90;
--weight;

console.log(weight); // 89Code language: JavaScript (javascript)

它等效于以下代码

let weight = 90;
weight = weight - 1;

console.log(weight); // 89Code language: JavaScript (javascript)

当你应用前缀自增或自减运算符时,JavaScript 会在求值语句之前更改变量。例如

let weight = 90;
weight = ++weight + 5;

console.log(weight); // 96Code language: JavaScript (javascript)

在这个例子中

  • 首先,将右侧的 weight 加一,因此 ++weight 为 91
  • 其次,将 ++weight 加五,返回 96
  • 第三,将结果分配给左侧的 weight。

类似地,以下示例使用前缀自减运算符

let weight = 90;
weight = --weight + 5;

console.log(weight); // 94Code language: JavaScript (javascript)

在这个例子中

  • 首先,将 weight 减一,–weight 返回 89
  • 其次,将 –weight 加五,返回 94
  • 第三,将结果分配给左侧的 weight。

后缀自增或自减运算符会在求值语句之后更改值。例如

let weight = 90;
let newWeight = weight++ + 5;

console.log(newWeight); // 95
console.log(weight); // 91Code language: JavaScript (javascript)

工作原理。

  • 首先,将 weight (90) 加五,并将结果分配给 newWeight (95)
  • 其次,在完成第二个语句后将 weight 变量加一,weight 变为 91。
  • 第三,将 newWeightweight 同时显示到控制台中。

将自增/自减运算符应用于非数字值时,它会执行以下步骤

  • 首先,使用与一元加号 (+) 运算符相同的规则将该值转换为数字。
  • 然后,将该值加一或减一。

摘要

  • 一元运算符作用于单个值。
  • 一元加号 (+) 或减号 (-) 将非数字值转换为数字。一元减号在转换后取反该值。
  • 前缀自增运算符将值加一。该值在求值语句之前更改。
  • 后缀自增运算符将值加一。该值在求值语句之后更改。
  • 前缀自减运算符将值减一。该值在求值语句之前更改。
  • 后缀自减运算符将值减一。该值在求值语句之后更改。
本教程是否有帮助?