数字是用来计算的,比如:乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起。
算术运算符:也叫数学运算符,主要包括加、减、乘、除、取余(求模)等
| 运算符 | 作用 |
| + | 求和 |
| - | 求差 |
| * | 求积 |
| / | 求商 |
| % | 取模(取余数) |
加法(+):
- let a = 5;
- let b = 3;
- let sum = a + b;
- console.log(sum); // 输出:8
减法(-):
- let a = 5;
- let b = 3;
- let difference = a - b;
- console.log(difference); // 输出:2
乘法(*):
- let a = 5;
- let b = 3;
- let product = a * b;
- console.log(product); // 输出:15
除法(/):
- let a = 10;
- let b = 2;
- let quotient = a / b;
- console.log(quotient); // 输出:5
取余(%):
- let a = 10;
- let b = 3;
- let remainder = a % b;
- console.log(remainder); // 输出:1,因为10除以3余数为1。
赋值运算符:对变量进行赋值的运算符
“=” 将等号右边的值赋予给左边, 要求左边必须是一个容器
| 运算符 | 作用 |
| += | 加法赋值 |
| -+ | 减法赋值 |
| *= | 乘法赋值 |
| /= | 除法赋值 |
| %= | 取余赋值 |
- let a = 10;
- let b = 5;
-
- // 加法赋值运算符 +=
- a += b; // 这行代码等同于 a = a + b; ,所以 a 的值会变成 15
- console.log(a); // 输出:15
-
- // 减法赋值运算符 -=
- a -= b; // 这行代码等同于 a = a - b; ,所以 a 的值会变回 10
- console.log(a); // 输出:10
-
- // 乘法赋值运算符 *=
- a *= b; // 这行代码等同于 a = a * b; ,所以 a 的值会变成 50
- console.log(a); // 输出:50
-
- // 除法赋值运算符 /=
- a /= b; // 这行代码等同于 a = a / b; ,所以 a 的值会变成 10
- console.log(a); // 输出:10
-
- // 取余赋值运算符 %=
- a %= b; // 这行代码等同于 a = a % b; ,所以 a 的值会变成 0
- console.log(a); // 输出:0
在JavaScript中,自增和自减是特殊的运算符,用于增加或减少变量的值。
例如:
- let count = 5;
- console.log(++count); // 输出:6,先自增,然后打印
- console.log(count); // 输出:6,打印当前的值
-
- let count2 = 5;
- console.log(count2++); // 输出:5,先打印,然后自增
- console.log(count2); // 输出:6,打印自增后的值
例如:
- let count = 5;
- console.log(--count); // 输出:4,先自减,然后打印
- console.log(count); // 输出:4,打印当前的值
-
- let count2 = 5;
- console.log(count2--); // 输出:5,先打印,然后自减
- console.log(count2); // 输出:4,打印自减后的值
使用场景:比较两个数据大小、是否相等,根据比较结果返回一个布尔值(true / false)
| 运算符 | 作用 |
| > | 左边是否大于右边 |
| < | 左边是否小于右边 |
| >= | 左边是否大于或等于右边 |
| <= | 左边是否小于或等于右边 |
| == | 左右两边值是否相等 |
| != | 左右值不相等 |
- let result = 10 > 5; // 检查10是否大于5
- console.log(result); // 输出:true
- let result = 5 < 10; // 检查5是否小于10
- console.log(result); // 输出:true
- let result = 10 >= 10; // 检查10是否大于或等于10
- console.log(result); // 输出:true
- let result = 5 <= 10; // 检查5是否小于或等于10
- console.log(result); // 输出:true
- let result = '5' == 5; // 检查字符串'5'是否等于数字5,这里会发生类型转换
- console.log(result); // 输出:true
- let result = '5' != 5; // 检查字符串'5'是否不等于数字5
- console.log(result); // 输出:false,因为在==运算符中,字符串和数字可以进行类型转换,所以这里字符串'5'和数字5是相等的,因此不等于运算结果为false。
| !== | 左右两边是否不全等 |
| === | 左右两边是否类型和值都相等(重点) |
!== 是一个“不全等”运算符。当使用 !== 进行比较时,如果两个值的类型不同,或者两个值的类型相同但内容不同,那么结果为 true。也就是说,只有当两个值的类型和内容都完全相同时,结果才为 false。
例如:
- console.log(5 !== '5'); // 输出:true,因为数字5和字符串'5'类型不同
- console.log(10 !== 10); // 输出:false,因为数字10和数字10类型和值都相同
与 !== 相对应,=== 是一个“全等”运算符。当使用 === 进行比较时,它会同时检查两个值的类型和内容是否都相同。只有当两个值的类型和内容都完全相同时,结果才为 true。否则,结果为 false。
例如:
- console.log(5 === '5'); // 输出:false,因为数字5和字符串'5'类型不同
- console.log(10 === 10); // 输出:true,因为数字10和数字10类型和值都相同
=== 和 !== ?使用 === 和 !== 的好处是它们可以防止JavaScript的自动类型转换,这在某些情况下可能会导致一些意想不到的问题。特别是在比较涉及到字符串和数字的情况时,使用 == 可能会导致错误的结果,因为它会尝试将字符串转换为数字进行比较。而 === 和 !== 不会进行这样的类型转换,因此它们提供了更准确、更可预测的比较结果。
所以,为了确保比较的准确性和避免可能出现的错误,通常推荐在JavaScript中使用 === 和 !== 运算符。
在JavaScript中,可以使用这些逻辑运算符来操作布尔值,他们分别是&&(逻辑与)、||(逻辑或)和!(逻辑非)。
&&(逻辑与):当且仅当两个操作数都为 true 时,结果才为 true。如果其中一个操作数为 false,结果就为 false。这就是“一假则假”的原则。- console.log(true && true); // 输出:true
- console.log(true && false); // 输出:false
- console.log(false && true); // 输出:false
- console.log(false && false); // 输出:false
||(逻辑或):只要两个操作数中有一个为 true,结果就为 true。只有当两个操作数都为 false 时,结果才为 false。这就是“一真则真”的原则。- console.log(true || true); // 输出:true
- console.log(true || false); // 输出:true
- console.log(false || true); // 输出:true
- console.log(false || false); // 输出:false
!(逻辑非):逻辑非运算符用于翻转操作数的逻辑状态。如果操作数为 true,结果就为 false。如果操作数为 false,结果就为 true。这就是“真变假,假变真”的原则。- console.log(!true); // 输出:false
- console.log(!false); // 输出:true
分支语句。分支语句用于根据某些条件来决定执行哪些代码。简单来说,它们帮助程序在多个选项中选择执行路径。
分支语句:是程序中用于做选择的语句。想象一下,你到了一个交叉路口,你需要根据某些标志或信号来决定往哪个方向走。分支语句在程序中就起到了这样的作用。
if语句用于根据条件执行代码块。它有两种常见形式:if语句和if...else语句。
if语句:
- let number = 10;
-
- if (number > 5) {
- console.log("数字大于5");
- }
上述代码中,如果number大于5,将输出"数字大于5"。
if...else语句:
- let number = 10;
-
- if (number > 5) {
- console.log("数字大于5");
- } else {
- console.log("数字小于等于5");
- }
上述代码中,如果number大于5,将输出"数字大于5",否则输出"数字小于等于5"。
if...else if...else语句
这是一种更灵活的if语句形式,允许在多个条件之间进行判断,执行第一个满足条件的代码块。如果没有条件满足,也可以使用else语句来执行默认的代码块。
- let number = 3;
-
- if (number === 1) {
- console.log("数字是1");
- } else if (number === 2) {
- console.log("数字是2");
- } else if (number === 3) {
- console.log("数字是3");
- } else {
- console.log("数字不是1、2或3");
- }
在上述代码中,根据number的值,逐个判断条件,执行第一个满足条件的代码块。如果number等于1,则输出"数字是1";如果number等于2,则输出"数字是2";如果number等于3,则输出"数字是3"。如果number的值没有匹配任何条件,将执行最后的else语句,输出"数字不是1、2或3"。
三元运算符是一种简洁的if...else语句,它在一行代码中完成条件判断和操作。
示例代码:
- let number = 10;
- let message = (number > 5) ? "数字大于5" : "数字小于等于5";
- console.log(message);
上述代码中,根据number是否大于5,将相应的消息赋值给message变量,并输出该消息。
switch语句用于根据表达式的值执行不同的代码块。它可以替代多个if...else语句,使代码更清晰和易读。
示例代码:
- let dayOfWeek = 2;
-
- switch (dayOfWeek) {
- case 1:
- console.log("星期一");
- break;
- case 2:
- console.log("星期二");
- break;
- default:
- console.log("其他星期");
- }
上述代码中,根据dayOfWeek的值,执行相应的case代码块,并输出对应的星期。如果dayOfWeek的值没有匹配的case,将执行default代码块。
while循环是一种前测试循环,这意味着在执行循环体内的代码块之前,先检查循环条件。如果条件为真,则执行循环体,然后再次检查条件。这个过程会一直重复,直到条件为假时停止循环
- let count = 0; // 初始化计数器
-
- while (count < 5) { // 在每次迭代前检查条件
- console.log(count); // 打印当前计数器的值
- count++; // 计数器递增
- }
- // 输出: 0, 1, 2, 3, 4
与while循环相比,do...while循环是一种后测试循环。这意味着它会先执行一次循环体内的代码块,然后再检查循环条件。如果条件为真,则再次执行循环体,并重复此过程。如果条件为假,则停止循环。
- let count = 0; // 初始化计数器
-
- do {
- console.log(count); // 打印当前计数器的值
- count++; // 计数器递增
- } while (count < 5); // 在每次迭代后检查条件
- // 输出: 0, 1, 2, 3, 4
for循环是一种更紧凑和常用的循环结构。它在单个语句中包含了初始化、条件和增量三个部分。
- for (let count = 0; count < 5; count++) { // 初始化、条件和增量合并到一个语句中
- console.log(count); // 打印当前计数器的值
- }
- // 输出: 0, 1, 2, 3, 4
初始化:let count = 0
循环条件:count < 5
循环增量:count++
数组就好比是一个容器,可以存放多个相同类型的值,并且这些值都有一个从0开始的编号,这个编号就是索引。我们可以使用这个索引来访问、修改或操作数组中的元素。
使用数组字面量定义:这是最常见且最简洁的方式来定义数组。数组字面量是一个包含一系列元素的列表,每个元素之间由逗号分隔,并包围在方括号([ ])中。
- // 1. 语法,使用 [] 来定义一个空数组
- // 定义一个空数组,然后赋值给变量 classes
- let classes = [];
-
- // 2. 定义非空数组
- let classes = ['小明', '小刚', '小红', '小丽', '小米']
通过 [] 定义数组,数据中可以存放真正的数据,如小明、小刚、小红等这些都是数组中的数据,我们这些数据称为数组单元,数组单元之间使用英文逗号分隔。
使用数组存放数据并不是最终目的,真正的目的是能够随时访问数组中的数据。这意味着数组不仅仅是一个存储数据的结构,更重要的是它能够让我们在需要的时候快速获取到数据。
为了达到这个目的,JavaScript为数组中的每一个数据单元都编了号。这些编号被称为索引值或下标。通过索引值,我们可以轻松地访问到数组中的数据单元。
例如,如果我们有一个数组arr,它包含三个元素,那么我们可以通过索引值来访问这些元素:arr[0]、arr[1]和arr[2]。这里的0、1和2就是索引值。

- let fruits = ['苹果', '香蕉', '橙子', '葡萄', '西瓜']
-
- // 1. 访问数组
- document.write(fruits[0]) // 结果为:苹果
- document.write(fruits[2]) // 结果为:橙子
- document.write(fruits[4]) // 结果为:西瓜
-
- // 2. 通过索引值重新为数组赋值
- document.write(fruits[1]) // 结果为:香蕉
- // 重新为索引值为 1 的元素赋值
- fruits[1] = '黄香蕉'
- document.write(fruits[1]) // 结果为:黄香蕉
- var arr = [1, 2, 3, 4, 5];
- console.log(arr.length); // 输出:5
- var arr = [1, 2, 3, 4, 5];
- arr.length = 3;
- console.log(arr); // 输出:[1, 2, 3]
-
- arr.length = 5;
- console.log(arr); // 输出:[1, 2, 3, undefined, undefined]
- var arr = [1, 2, 3, 4];
- arr.push(5);
- console.log(arr); // 输出:[1, 2, 3, 4, 5]
- var arr = [1, 2, 3, 4];
- arr.unshift(0);
- console.log(arr); // 输出:[0, 1, 2, 3, 4]
- var arr = [1, 2, 3, 4];
- var lastElement = arr.pop();
- console.log(arr); // 输出:[1, 2, 3]
- console.log(lastElement); // 输出:4
- var arr = [1, 2, 3, 4];
- var firstElement = arr.shift();
- console.log(arr); // 输出:[2, 3, 4]
- console.log(firstElement); // 输出:1
splice方法可以在任何位置删除元素,它接受两个参数,第一个参数是要开始删除的索引,第二个参数是要删除的元素数量。- var arr = [1, 2, 3, 4];
- arr.splice(2, 1); // 从索引2开始,删除1个元素
- console.log(arr); // 输出:[1, 2, 4]