dmz社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2117|回复: 1

[前端] 理解JavaScript var、let、const

[复制链接]

238

主题

263

帖子

1135

积分

荣誉会员

积分
1135

发表于 2023-6-5 15:04:59 | 显示全部楼层 |阅读模式

本站资源全部免费,回复即可查看下载地址!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一、var:1、提升
[JavaScript] 纯文本查看 复制代码
console.log(num); // undefined
var num = 1;
var定义的变量会声明提升,可以理解为:
var num;
console.log(num);
num = 1;

2、变量覆盖
[JavaScript] 纯文本查看 复制代码
var num = 1;
var num = 2;
console.log(num); // 2

这段代码并不会报错,以上代码可以看成:
[JavaScript] 纯文本查看 复制代码
var num;
num = 1;
num = 2;
console.log(num); // 2

3、没有块级作用域
[JavaScript] 纯文本查看 复制代码
function demo(){
    for(var i=0; i<3; i++){
    }
    console.log(i);  //3
}  

由于没有块级作用域,循环之后,i仍然存在
4、var在全局作用域下声明变量会挂载在 window 上
[JavaScript] 纯文本查看 复制代码
var num = 1;
console.log(window.num);  // 1

5、var是具有函数作用域的
[AppleScript] 纯文本查看 复制代码
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 上
[JavaScript] 纯文本查看 复制代码
let num1 = 1
let num2 = 2
console.log(window.num1)  // undefined
console.log(window.num2)  // undefined

4、支持块级作用域
三、暂时性死区:
[AppleScript] 纯文本查看 复制代码
function demo(){
    console.log(num) // ReferenceError: num is not defined
    let num = 1
}

let、const 存在暂时性死区,声明前不可使用


回复

使用道具 举报

1

主题

664

帖子

2256

积分

一代宗师

Rank: 7Rank: 7Rank: 7

积分
2256

发表于 2023-8-24 13:58:07 | 显示全部楼层
感谢楼主分享知识!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|dmz社区

GMT+8, 2026-7-29 06:55 , Processed in 0.040472 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表