一、var:1、提升
- console.log(num); // undefined
- var num = 1;
- var定义的变量会声明提升,可以理解为:
- var num;
- console.log(num);
- num = 1;
复制代码 2、变量覆盖
- var num = 1;
- var num = 2;
- console.log(num); // 2
- 这段代码并不会报错,以上代码可以看成:
- var num;
- num = 1;
- num = 2;
- console.log(num); // 2
复制代码 3、没有块级作用域
- function demo(){
- for(var i=0; i<3; i++){
- }
- console.log(i); //3
- }
复制代码 由于没有块级作用域,循环之后,i仍然存在
4、var在全局作用域下声明变量会挂载在 window 上
- var num = 1;
- console.log(window.num); // 1
复制代码 5、var是具有函数作用域的
- var a = 1;
- function fn() {
- var a = 10
- }
- fn();
- console.log(a); // 1
复制代码 在函数中用var声明的变量和全局作用域的相同,也不会进行覆盖。
二、let、const:
1、const声明的变量必须赋初始值、let则不用
2、const定义的值无法直接更改,而let定义的值可以更改
3、let、const 定义的变量不会挂载在 window 上
- let num1 = 1
- let num2 = 2
- console.log(window.num1) // undefined
- console.log(window.num2) // undefined
复制代码 4、支持块级作用域
三、暂时性死区:
- function demo(){
- console.log(num) // ReferenceError: num is not defined
- let num = 1
- }
复制代码 let、const 存在暂时性死区,声明前不可使用
|
评分
-
查看全部评分总评分 : 金币 +180
1、本帖所有言论、观点及图片均为会员个人观点,不代表本站立场。
2、本帖资源内容来源于网友、站友、作者推广引流自愿分享或其他公开网络渠道,仅用于交流与学习参考。
3、如本帖内容涉及任何版权或知识产权问题,请立即点论坛右侧邮件图标联系我们,我们将在核实后及时删除,并致以歉意。
4、本站资料仅供站友个人学习参考,禁止以任何形式进行传播或商用;如下载学习,请务必在 24 小时内删除。