加法运算符+用于数值相加或字符串拼接。
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(立方根)
// 两者功能相同
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 | 转换为数字并取反 |
掌握了算术运算符后,让我们继续学习:
东巴文(db-w.cn) - 让编程学习更简单
➕ 东巴文寄语:算术运算符是最基础的运算符,理解它们的类型转换规则,特别是加法运算符的双重用途,是JavaScript编程的基本功。在 db-w.cn,我们帮你打好每一个基础!