算术运算符

加法运算符

加法运算符+用于数值相加或字符串拼接。

数值相加

console.log(1 + 2);        // 3
console.log(1.5 + 2.5);    // 4
console.log(-5 + 3);       // -2
console.log(Infinity + 1); // Infinity
console.log(Infinity + -Infinity); // NaN

字符串拼接

console.log("东" + "巴文");     // "东巴文"
console.log("数字:" + 123);    // "数字:123"
console.log(1 + "2");           // "12"
console.log(1 + 2 + "3");       // "33"
console.log("1" + 2 + 3);       // "123"

加法规则

操作数1 操作数2 结果 东巴文说明
数字 数字 数字相加 正常加法
字符串 任意 字符串拼接 转为字符串
任意 字符串 字符串拼接 转为字符串

特殊值

console.log(1 + null);        // 1(null转为0)
console.log(1 + undefined);   // NaN(undefined转为NaN)
console.log(1 + true);        // 2(true转为1)
console.log(1 + false);       // 1(false转为0)
console.log([] + []);         // ""(空数组转空字符串)
console.log([] + {});         // "[object Object]"
console.log({} + []);         // 0 或 "[object Object]"

减法运算符

减法运算符-用于数值相减。

基本用法

console.log(5 - 3);       // 2
console.log(10.5 - 0.5);  // 10
console.log(3 - 5);       // -2
console.log(Infinity - 1);// Infinity

类型转换

console.log(5 - "3");         // 2(字符串转数字)
console.log("10" - "5");      // 5
console.log(5 - true);        // 4(true转为1)
console.log(5 - false);       // 5(false转为0)
console.log(5 - null);        // 5(null转为0)
console.log(5 - undefined);   // NaN
console.log("东巴文" - 1);     // NaN

乘法运算符

乘法运算符*用于数值相乘。

基本用法

console.log(2 * 3);       // 6
console.log(2.5 * 4);     // 10
console.log(-2 * 3);      // -6
console.log(0 * 5);       // 0

特殊值

console.log(2 * "3");         // 6
console.log(Infinity * 2);    // Infinity
console.log(Infinity * 0);    // NaN
console.log(Infinity * -1);   // -Infinity

除法运算符

除法运算符/用于数值相除。

基本用法

console.log(6 / 2);       // 3
console.log(7 / 2);       // 3.5
console.log(1 / 3);       // 0.3333333333333333
console.log(-6 / 2);      // -3

特殊值

console.log(1 / 0);           // Infinity
console.log(-1 / 0);          // -Infinity
console.log(0 / 0);           // NaN
console.log(Infinity / Infinity); // NaN
console.log(10 / "2");        // 5

取余运算符

取余运算符%返回除法的余数。

基本用法

console.log(7 % 3);       // 1
console.log(10 % 5);      // 0
console.log(10 % 3);      // 1
console.log(-7 % 3);      // -1(结果符号与被除数相同)
console.log(7 % -3);      // 1

应用场景

// 判断奇偶
function isEven(n) {
    return n % 2 === 0;
}
console.log(isEven(4));  // true
console.log(isEven(5));  // false

// 循环索引
let arr = ["a", "b", "c"];
for (let i = 0; i < 10; i++) {
    console.log(arr[i % 3]);  // 循环输出 a, b, c
}

// 分页计算
let page = 25;
let pageSize = 10;
let currentPage = Math.floor(page / pageSize) + 1;  // 第3页
let offset = page % pageSize;  // 偏移5

幂运算符

幂运算符**用于计算幂次方(ES2016)。

基本用法

console.log(2 ** 3);      // 8
console.log(3 ** 2);      // 9
console.log(2 ** 0.5);    // 1.4142135623730951(平方根)
console.log(2 ** -1);     // 0.5
console.log(4 ** (1/2));  // 2(平方根)
console.log(8 ** (1/3));  // 2(立方根)

与Math.pow对比

// 两者功能相同
console.log(2 ** 10);           // 1024
console.log(Math.pow(2, 10));   // 1024

// 幂运算符是右结合
console.log(2 ** 3 ** 2);       // 512(2 ** 9)
console.log(Math.pow(2, Math.pow(3, 2))); // 512

自增运算符

自增运算符++将变量值加1。

前置自增

let a = 5;
console.log(++a);  // 6(先加1,再返回)
console.log(a);    // 6

后置自增

let b = 5;
console.log(b++);  // 5(先返回,再加1)
console.log(b);    // 6

区别示例

let x = 5;
let y = ++x + 2;   // x先变成6,然后6 + 2 = 8
console.log(x, y); // 6 8

let m = 5;
let n = m++ + 2;   // m先返回5,然后5 + 2 = 7,最后m变成6
console.log(m, n); // 6 7

自减运算符

自减运算符--将变量值减1。

前置自减

let a = 5;
console.log(--a);  // 4(先减1,再返回)
console.log(a);    // 4

后置自减

let b = 5;
console.log(b--);  // 5(先返回,再减1)
console.log(b);    // 4

前置与后置对比

类型 操作 返回值 东巴文记忆
前置++ 先加后用 加后的值 先加再用
后置++ 先用后加 原来的值 先用再加
前置-- 先减后用 减后的值 先减再用
后置-- 先用后减 原来的值 先用再减

一元正负运算符

一元正号

一元正号+将操作数转换为数字:

console.log(+"5");        // 5
console.log(+"3.14");     // 3.14
console.log(+"东巴文");    // NaN
console.log(+true);       // 1
console.log(+false);      // 0
console.log(+null);       // 0
console.log(+undefined);  // NaN
console.log(+new Date()); // 时间戳

一元负号

一元负号-将操作数转换为数字并取反:

console.log(-"5");        // -5
console.log(-"3.14");     // -3.14
console.log(-"东巴文");    // NaN
console.log(-true);       // -1
console.log(-false);      // -0
console.log(-null);       // -0

应用场景

// 快速转换为数字
let str = "123";
let num = +str;  // 123

// 获取时间戳
let timestamp = +new Date();

// 字符串转数字并计算
let price = "99.99";
let quantity = "2";
let total = +price * +quantity;  // 199.98

算术运算符总结

运算符 名称 示例 东巴文说明
+ 加法 1 + 2 = 3 也可用于字符串拼接
- 减法 5 - 3 = 2 -
* 乘法 2 * 3 = 6 -
/ 除法 6 / 2 = 3 除以0得Infinity
% 取余 7 % 3 = 1 余数符号与被除数相同
** 2 ** 3 = 8 ES2016新增
++ 自增 ++a, a++ 前置后置有区别
-- 自减 --a, a-- 前置后置有区别
+ 一元正 +"5" = 5 转换为数字
- 一元负 -"5" = -5 转换为数字并取反

下一步

掌握了算术运算符后,让我们继续学习:

  1. 比较运算符 - 学习比较运算
  2. 逻辑运算符 - 学习逻辑运算
  3. 其他运算符 - 学习其他运算符

东巴文(db-w.cn) - 让编程学习更简单

东巴文寄语:算术运算符是最基础的运算符,理解它们的类型转换规则,特别是加法运算符的双重用途,是JavaScript编程的基本功。在 db-w.cn,我们帮你打好每一个基础!