update: 文件结构调整
This commit is contained in:
parent
b34943e616
commit
cb804e2a3e
@ -81,7 +81,6 @@ for (var i = 0; i < 10; i++) {
|
|||||||
console.log('循环体外:' + i);
|
console.log('循环体外:' + i);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
上方代码可以正常打印结果,且最后一行的打印结果是 10。说明**循环体外**定义的变量 i,是**全局作用域**下的 i。
|
上方代码可以正常打印结果,且最后一行的打印结果是 10。说明**循环体外**定义的变量 i,是**全局作用域**下的 i。
|
||||||
|
|
||||||
2、用 let 声明变量:
|
2、用 let 声明变量:
|
||||||
@ -116,18 +115,18 @@ const name = 'smyhvae'; //定义常量
|
|||||||
|
|
||||||
### let 和 const 的特点【重要】
|
### let 和 const 的特点【重要】
|
||||||
|
|
||||||
|
- 不属于顶层对象 Window
|
||||||
|
|
||||||
|
- 不允许重复声明
|
||||||
|
|
||||||
- 不存在变量提升
|
- 不存在变量提升
|
||||||
|
|
||||||
- 禁止重复声明
|
|
||||||
|
|
||||||
- 支持块级作用域
|
|
||||||
|
|
||||||
- 暂时性死区
|
- 暂时性死区
|
||||||
|
|
||||||
|
- 支持块级作用域
|
||||||
|
|
||||||
相反, 用`var`声明的变量:存在变量提升、可以重复声明、**没有块级作用域**。
|
相反, 用`var`声明的变量:存在变量提升、可以重复声明、**没有块级作用域**。
|
||||||
|
|
||||||
|
|
||||||
### var/let/const 的共同点
|
### var/let/const 的共同点
|
||||||
|
|
||||||
- 全局作用域中定义的变量,可以在函数中使用。
|
- 全局作用域中定义的变量,可以在函数中使用。
|
||||||
@ -136,7 +135,7 @@ const name = 'smyhvae'; //定义常量
|
|||||||
|
|
||||||
### 总结
|
### 总结
|
||||||
|
|
||||||
关于 let、const、var 更详细的介绍和区别,可以看本项目的另一篇文章《JavaScript 进阶/var、let、const 的区别.md》。
|
关于 let、const、var 更详细的介绍和区别,可以看本项目的另一篇文章《JavaScript 进阶/var、let、const 的区别》。
|
||||||
|
|
||||||
## for 循环举例(经典案例)
|
## for 循环举例(经典案例)
|
||||||
|
|
||||||
@ -239,8 +238,9 @@ i++; // 到这里,i 的值已经是4了。因此,当我们点击按钮时,
|
|||||||
|
|
||||||
上面这个运行结果,才是我们预期的效果。我们用 let 定义变量 i,在循环的过程中,每执行一次循环体,就会诞生一个新的 i。循环体执行 4 次,就会有四个 i。
|
上面这个运行结果,才是我们预期的效果。我们用 let 定义变量 i,在循环的过程中,每执行一次循环体,就会诞生一个新的 i。循环体执行 4 次,就会有四个 i。
|
||||||
|
|
||||||
|
## 补充知识
|
||||||
|
|
||||||
## 暂时性死区 DTC
|
### 暂时性死区 DTC
|
||||||
|
|
||||||
ES6 规定:使用 let/const 声明的变量,会使区块形成封闭的作用域。若在声明之前使用变量,就会报错。
|
ES6 规定:使用 let/const 声明的变量,会使区块形成封闭的作用域。若在声明之前使用变量,就会报错。
|
||||||
|
|
||||||
@ -261,12 +261,30 @@ function foo() {
|
|||||||
foo(); // 执行函数后,控制台报错:Uncaught ReferenceError: Cannot access 'name' before initialization
|
foo(); // 执行函数后,控制台报错:Uncaught ReferenceError: Cannot access 'name' before initialization
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### ES5 中如何定义常量
|
||||||
|
|
||||||
|
ES5中有`Object.defineProperty`这样一个api,可以定义常量。这个API中接收三个参数。
|
||||||
|
|
||||||
|
代码举例:
|
||||||
|
|
||||||
|
```js
|
||||||
|
// 定义常量 PI
|
||||||
|
Object.defineProperty(window, 'PI', {
|
||||||
|
value: 3.14,
|
||||||
|
writable: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(PI); // 打印结果:3.14
|
||||||
|
PI = 6; //尝试修改常量
|
||||||
|
console.log(PI); //打印结果:3.14,说明修改失败
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 参考链接:
|
## 参考链接:
|
||||||
|
|
||||||
- [阮一峰 | ECMAScript 6 入门](http://es6.ruanyifeng.com/)
|
- [阮一峰 | ECMAScript 6 入门](http://es6.ruanyifeng.com/)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 我的公众号
|
## 我的公众号
|
||||||
|
|
||||||
想学习**代码之外的技能**?不妨关注我的微信公众号:**千古壹号**。
|
想学习**代码之外的技能**?不妨关注我的微信公众号:**千古壹号**。
|
Loading…
x
Reference in New Issue
Block a user