feat: Add JavaScript core exercises and solutions
- Implemented exercises for array high-order methods, memory and execution, switch statements, and final review. - Added starter and answer files for each exercise to facilitate learning. - Created a runner HTML file to execute JavaScript code and display console outputs. - Updated README files to include exercise objectives, tasks, and usage instructions.
This commit is contained in:
30
03-javascript-core/11-var-and-scope/README.md
Normal file
30
03-javascript-core/11-var-and-scope/README.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# 练习 11:var、let、const 与提升
|
||||
|
||||
## 目标
|
||||
|
||||
理解 `var`、`let`、`const` 的基本区别,尤其是作用域和提升差异。
|
||||
|
||||
## 你要练什么
|
||||
|
||||
- `var`
|
||||
- `let`
|
||||
- `const`
|
||||
- 变量提升
|
||||
- 块级作用域
|
||||
- 函数作用域
|
||||
|
||||
## 任务
|
||||
|
||||
请完成一个“作用域观察”脚本,要求:
|
||||
|
||||
- 观察 `var` 声明前为什么能访问到 `undefined`
|
||||
- 用 `var` 声明一个函数内部变量
|
||||
- 用 `let` 声明一个代码块内部变量
|
||||
- 在可访问的位置输出它们
|
||||
- 观察为什么 `var` 在块外还能访问,而 `let` 不行
|
||||
- 再写一段代码证明 `const` 不能被重新赋值
|
||||
|
||||
## 文件
|
||||
|
||||
- [starter.js](/Users/lijiaqing/home/wwwroot/front-end-example/03-javascript-core/11-var-and-scope/starter.js)
|
||||
- [answer.js](/Users/lijiaqing/home/wwwroot/front-end-example/03-javascript-core/11-var-and-scope/answer.js)
|
||||
28
03-javascript-core/11-var-and-scope/answer.js
Normal file
28
03-javascript-core/11-var-and-scope/answer.js
Normal file
@@ -0,0 +1,28 @@
|
||||
console.log("var 声明前:", lessonType);
|
||||
var lessonType = "JavaScript";
|
||||
|
||||
console.log("var 声明后:", lessonType);
|
||||
// console.log("let 声明前:", chapterType);
|
||||
// let 在声明前处于暂时性死区,直接访问会报错。
|
||||
|
||||
function compareScope() {
|
||||
if (true) {
|
||||
var lessonName = "变量";
|
||||
let chapterName = "作用域";
|
||||
const stage = "进阶";
|
||||
|
||||
console.log("块内:", lessonName, chapterName, stage);
|
||||
}
|
||||
|
||||
console.log("块外仍能访问 var:", lessonName);
|
||||
// console.log(chapterName);
|
||||
// chapterName 是 let 声明的块级作用域变量,离开 if 代码块后就不能访问。
|
||||
}
|
||||
|
||||
compareScope();
|
||||
|
||||
const level = "核心阶段";
|
||||
console.log("const 初始值:", level);
|
||||
|
||||
// level = "下一阶段";
|
||||
// const 不能被重新赋值,否则会报错。
|
||||
27
03-javascript-core/11-var-and-scope/starter.js
Normal file
27
03-javascript-core/11-var-and-scope/starter.js
Normal file
@@ -0,0 +1,27 @@
|
||||
console.log("var 声明前:", lessonType);
|
||||
var lessonType = "JavaScript";
|
||||
|
||||
// 如果你取消下面两行注释,会报错,因为 let 在声明前不能访问。
|
||||
// console.log("let 声明前:", chapterType);
|
||||
// let chapterType = "作用域";
|
||||
|
||||
function compareScope() {
|
||||
if (true) {
|
||||
var lessonName = "变量";
|
||||
let chapterName = "作用域";
|
||||
const stage = "进阶";
|
||||
|
||||
console.log("块内:", lessonName, chapterName, stage);
|
||||
}
|
||||
|
||||
// 任务:
|
||||
// 1. 输出 lessonName
|
||||
// 2. 不要直接在这里输出 chapterName,否则会报错
|
||||
// 3. 用一句注释说明为什么
|
||||
}
|
||||
|
||||
compareScope();
|
||||
|
||||
// 任务:
|
||||
// 4. 试着重新给 const 声明的值赋值
|
||||
// 5. 观察会发生什么
|
||||
Reference in New Issue
Block a user