Appearance
6. 运算符(计算与比较)
运算符是 JavaScript 中用于执行操作的符号,如算术运算、比较运算、逻辑运算等。本章节将带你学习 JavaScript 的各种运算符及其使用方法。
6.1 算术运算符:+ - * / % ++ --
算术运算符用于执行基本的数学运算。
加法运算符(+)
javascript
let a = 5;
let b = 3;
let sum = a + b; // 8
// 字符串拼接
let str1 = "Hello";
let str2 = "World";
let greeting = str1 + " " + str2; // "Hello World"减法运算符(-)
javascript
let a = 5;
let b = 3;
let difference = a - b; // 2乘法运算符(*)
javascript
let a = 5;
let b = 3;
let product = a * b; // 15除法运算符(/)
javascript
let a = 10;
let b = 2;
let quotient = a / b; // 5
// 注意:JavaScript 中的除法总是返回浮点数
let c = 5;
let d = 2;
let result = c / d; // 2.5取模运算符(%)
取模运算符返回除法的余数。
javascript
let a = 10;
let b = 3;
let remainder = a % b; // 1
// 用于判断奇偶性
let num = 7;
if (num % 2 === 0) {
console.log("偶数");
} else {
console.log("奇数");
}自增运算符(++)
自增运算符将变量的值加 1。
javascript
let a = 5;
a++; // 等同于 a = a + 1
console.log(a); // 6
// 前缀自增
let b = 5;
console.log(++b); // 6
console.log(b); // 6
// 后缀自增
let c = 5;
console.log(c++); // 5
console.log(c); // 6自减运算符(--)
自减运算符将变量的值减 1。
javascript
let a = 5;
a--; // 等同于 a = a - 1
console.log(a); // 4
// 前缀自减
let b = 5;
console.log(--b); // 4
console.log(b); // 4
// 后缀自减
let c = 5;
console.log(c--); // 5
console.log(c); // 46.2 赋值运算符:= += -= *= /=
赋值运算符用于给变量赋值。
基本赋值(=)
javascript
let a = 5;加法赋值(+=)
javascript
let a = 5;
a += 3; // 等同于 a = a + 3
console.log(a); // 8
// 字符串拼接
let str = "Hello";
str += " World"; // 等同于 str = str + " World"
console.log(str); // "Hello World"减法赋值(-=)
javascript
let a = 5;
a -= 3; // 等同于 a = a - 3
console.log(a); // 2乘法赋值(*=)
javascript
let a = 5;
a *= 3; // 等同于 a = a * 3
console.log(a); // 15除法赋值(/=)
javascript
let a = 10;
a /= 2; // 等同于 a = a / 2
console.log(a); // 5取模赋值(%=)
javascript
let a = 10;
a %= 3; // 等同于 a = a % 3
console.log(a); // 16.3 比较运算符:> < >= <= == === != !==
比较运算符用于比较两个值,返回布尔值 true 或 false。
大于(>)
javascript
console.log(5 > 3); // true
console.log(3 > 5); // false小于(<)
javascript
console.log(3 < 5); // true
console.log(5 < 3); // false大于等于(>=)
javascript
console.log(5 >= 5); // true
console.log(5 >= 3); // true
console.log(3 >= 5); // false小于等于(<=)
javascript
console.log(3 <= 3); // true
console.log(3 <= 5); // true
console.log(5 <= 3); // false相等(==)
宽松比较,会进行类型转换。
javascript
console.log(5 == 5); // true
console.log(5 == "5"); // true(字符串 "5" 被转换为数字 5)
console.log(0 == false); // true(0 和 false 都被转换为 0)
console.log(null == undefined); // true严格相等(===)
严格比较,不会进行类型转换,要求类型和值都相等。
javascript
console.log(5 === 5); // true
console.log(5 === "5"); // false(类型不同)
console.log(0 === false); // false(类型不同)
console.log(null === undefined); // false(类型不同)不相等(!=)
宽松比较,会进行类型转换。
javascript
console.log(5 != 3); // true
console.log(5 != "5"); // false(字符串 "5" 被转换为数字 5)严格不相等(!==)
严格比较,不会进行类型转换。
javascript
console.log(5 !== 3); // true
console.log(5 !== "5"); // true(类型不同)6.4 逻辑运算符:&& || !(与 / 或 / 非)
逻辑运算符用于组合或取反布尔值。
逻辑与(&&)
当所有操作数都为真时,返回最后一个真值;否则返回第一个假值。
javascript
console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false
// 短路求值
let a = 5;
let b = 10;
console.log(a > 0 && b > 0); // true
console.log(a > 10 && b > 0); // false(a > 10 为假,短路)逻辑或(||)
当至少有一个操作数为真时,返回第一个真值;否则返回最后一个假值。
javascript
console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // false
// 短路求值
let a = 5;
let b = 10;
console.log(a > 0 || b > 0); // true(a > 0 为真,短路)
console.log(a > 10 || b > 10); // false
// 设置默认值
let name = "";
let displayName = name || "Guest";
console.log(displayName); // "Guest"逻辑非(!)
取反布尔值。
javascript
console.log(!true); // false
console.log(!false); // true
console.log(!0); // true(0 被转换为 false)
console.log(!"" ); // true(空字符串被转换为 false)
console.log(!"Hello"); // false(非空字符串被转换为 true)
console.log(!!"Hello"); // true(双重取反,将值转换为布尔值)6.5 运算符优先级(简单记忆法)
运算符优先级决定了表达式中运算的执行顺序。优先级高的运算符先执行,优先级低的运算符后执行。
优先级从高到低
- 括号:
() - 一元运算符:
++,--,! - 算术运算符:
*,/,%高于+,- - 比较运算符:
>,<,>=,<=高于==,===,!=,!== - 逻辑运算符:
&&高于|| - 赋值运算符:
=,+=,-=,*=,/=
示例
javascript
// 括号优先级最高
let result1 = (5 + 3) * 2; // 16
// 一元运算符优先级高于算术运算符
let a = 5;
let result2 = ++a * 2; // 12(a 先自增为 6,再乘以 2)
// 算术运算符优先级高于比较运算符
let result3 = 5 + 3 > 6; // true(先计算 5 + 3 = 8,再比较 8 > 6)
// 比较运算符优先级高于逻辑运算符
let result4 = 5 > 3 && 2 < 4; // true(先比较 5 > 3 和 2 < 4,再进行逻辑与)
// 逻辑与优先级高于逻辑或
let result5 = true || false && false; // true(先计算 false && false = false,再计算 true || false)
// 逻辑运算符优先级高于赋值运算符
let b = true && false; // false简单记忆法
- 括号最优先:先计算括号内的表达式
- 一元先于二元:自增、自减、逻辑非等一元运算符先执行
- 乘除高于加减:乘法、除法、取模高于加法、减法
- 比较高于逻辑:比较运算符高于逻辑运算符
- 逻辑与高于或:逻辑与高于逻辑或
- 赋值最后算:赋值运算符最后执行
小结
通过本章节的学习,你已经掌握了:
- 算术运算符:
+,-,*,/,%,++,-- - 赋值运算符:
=,+=,-=,*=,/= - 比较运算符:
>,<,>=,<=,==,===,!=,!== - 逻辑运算符:
&&,||,! - 运算符优先级
在后续的章节中,我们将学习 JavaScript 的条件语句、循环和函数等核心语法。
