
2024-12-2 日报 Day23

今日的鸡汤
人生,从外打破是压力,从内打破是成长。
今日学习内容
1、JS红皮书P73-76 第三章:语言基础
今日笔记
1、if语句:if (condition) statement1 else statement2
这里的条件(condition)可以是任何表达式,并且求值结果不一定是布尔值。ECMAScript 会自动调用 Boolean()函数将这个表达式的值转换为布尔值。如果条件求值为 true,则执行语句statement1;如果条件求值为 false,则执行语句 statement2。这里的语句可能是一行代码,也可能是一个代码块(即包含在一对花括号中的多行代码)。来看下面的例子:
1 | if (i > 25) |
2、do-while 语句:do-while 语句是一种后测试循环语句,即只有在循环体中的代码执行之后,才会测试条件。因此,循环体内的代码至少会执行一次。do-while 语句的语法如下:
do {
statement
} while (condition);
1 | let i = 0; |
3、while 语句:while 语句是一种先测试循环语句,即在循环体内的代码被执行之前,就会先测试条件。如果条件为 true,则继续执行循环;如果条件为 false,则不执行循环。while 语句的语法如下:
while (condition) {
statement
}
1 | let i = 0; |
4、for 语句:for 语句是一种前测试循环语句,即在循环体内的代码被执行之前,就会先测试条件。如果条件为 true,则继续执行循环;如果条件为 false,则不执行循环。for 语句的语法如下:
for (initialization; condition; post-loop-expression) {
statement
}
1 | for (let i = 0; i < 10; i += 2) { |
5、for-in 语句:for-in 语句是一种精准的迭代语句,可以用来枚举对象的属性。for-in 语句的语法如下:
for (property in expression) {
statement
}
1 | for (let propName in window) { |
6、for-of 语句:for-of 语句是一种精准的迭代语句,可以用来遍历可迭代对象的元素。for-of 语句的语法如下:
for (variable of expression) {
statement
}
1 | let data = [1, 2, 3, 4, 5]; |
7、for-of和for-in的区别:
- for-in 循环用来枚举对象的属性,包括原型链上的属性。
- for-of 循环用来遍历可迭代对象的元素,包括数组、字符串、Map 和 Set 等。
8、标签语句
标签语句是一种标识语句的方法,可以在代码中添加标签,以便将来引用。标签语句的语法如下:
label: statement在 JavaScript 中,标签语句(Labeled Statement) 是一种给语句打上标签的语法结构,常用于配合 break 或 continue,跳出多层循环或控制流程。1
2
3start: for (let i = 0; i < count; i++) {
console.log(i);
}
⸻
✅ 语法:
labelName:
statement
⸻
🚩 使用场景:
多层嵌套循环中提前跳出某一层外部循环,这时候普通的 break 只能跳出一层,用标签可以指定跳出哪一层。
⸻
🧪 举个例子:
🚫 普通 break 只能跳出一层:
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) break;
console.log(i=${i}, j=${j}
);
}
}
// 输出:i=0,j=0 → i=0,j=1 → i=0,j=2 → i=1,j=0 → i=1,j=2 还继续了
⸻
✅ 用标签配合 break:
outerLoop: // 给外层循环打标签
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) break outerLoop;
console.log(i=${i}, j=${j}
);
}
}
// 输出:i=0,j=0 → i=0,j=1 → i=0,j=2 → i=1,j=0(然后 break 了整个外层)
⸻
✅ continue 也可以配合标签使用:
outer:
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) continue outer;
console.log(i=${i}, j=${j}
);
}
}
// j=1 时直接跳到下一轮外层 i++
⸻
⚠️ 注意事项:
• 标签不能重复定义。
• 标签 只能配合 break 或 continue 使用,不能像 goto 那样任意跳转。
• 使用频率不高,但在复杂嵌套逻辑中可以提升可读性或性能。
⸻