登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
3
Star
47
Fork
22
DreamCoders
/
CoderGuide
代码
Issues
1169
Pull Requests
0
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
说说 let、var 、 const 的理解
待办的
#IAG9OX
陌生人
拥有者
创建于
2024-07-29 16:07
<p><br></p><table style="width: 100%; text-align: left;"><tbody><tr><th colspan="1" rowspan="1" width="341.7" style="text-align: left;">区别</th><th colspan="1" rowspan="1" width="auto" style="text-align: left;">var</th><th colspan="1" rowspan="1" width="auto" style="text-align: left;">let</th><th colspan="1" rowspan="1" width="auto" style="text-align: left;">const</th></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">块级作用域</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">是否存在变量提升</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">是否添加全局属性</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">重复声明同名变量</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">是否存在暂时性死区</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">是否必须设置初始值</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">能否改变指针方向</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td></tr></tbody></table><h4></h4><h4>let :</h4><p>允许你声明一个作用域被限制在块级中的变量、语句或者表达式</p><p>let 绑定不受变量提升的约束,这意味着 let 声明不会被提升到当前</p><p>该变量处于从块开始到初始化处理的“暂存死区”</p><h4>var :</h4><p>声明变量的作用域限制在其声明位置的上下文中,而非声明变量总是全局的</p><p>由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明</p><h4>const :</h4><p>声明创建一个值的只读引用 (即指针)</p><p>基本数据当值发生改变时,那么其对应的指针也将发生改变,故造成 const 申明基本数据类型时</p><p>再将其值改变时,将会造成报错, 例如 const a = 3 ; a = 5 时 将会报错</p><p>但是如果是复合类型时,如果只改变复合类型的其中某个 Value 项时, 将还是正常使用</p><p><br></p><p>(1)块级作用域: 块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了 ES5 中的两个问题:</p><p>内层变量可能覆盖外层变量</p><p>用来计数的循环变量泄露为全局变量</p><p>(2)变量提升: var存在变量提升,let和const不存在变量提升,即在变量只能在声明之后使用,否在会报错。</p><p>(3)给全局添加属性: 浏览器的全局对象是window,Node的全局对象是global。var声明的变量为全局变量,并且会将该变量添加为全局对象的属性,但是let和const不会。</p><p>(4)重复声明: var声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的遍历。const和let不允许重复声明变量。</p><p>(5)暂时性死区: 在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在暂时性死区。</p><p>(6)初始值设置: 在变量声明时,var 和 let 可以不用设置初始值。而const声明变量必须设置初始值。</p><p>(7)指针指向: let和const都是ES6新增的用于创建变量的语法。 let创建的变量是可以更改指针指向(可以重新赋值)。但const声明的变量是不允许改变指针的指向。</p>
<p><br></p><table style="width: 100%; text-align: left;"><tbody><tr><th colspan="1" rowspan="1" width="341.7" style="text-align: left;">区别</th><th colspan="1" rowspan="1" width="auto" style="text-align: left;">var</th><th colspan="1" rowspan="1" width="auto" style="text-align: left;">let</th><th colspan="1" rowspan="1" width="auto" style="text-align: left;">const</th></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">块级作用域</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">是否存在变量提升</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">是否添加全局属性</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">重复声明同名变量</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">是否存在暂时性死区</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">是否必须设置初始值</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td></tr><tr><td colspan="1" rowspan="1" width="auto" style="text-align: left;">能否改变指针方向</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">✔️</td><td colspan="1" rowspan="1" width="auto" style="text-align: left;">❌</td></tr></tbody></table><h4></h4><h4>let :</h4><p>允许你声明一个作用域被限制在块级中的变量、语句或者表达式</p><p>let 绑定不受变量提升的约束,这意味着 let 声明不会被提升到当前</p><p>该变量处于从块开始到初始化处理的“暂存死区”</p><h4>var :</h4><p>声明变量的作用域限制在其声明位置的上下文中,而非声明变量总是全局的</p><p>由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明</p><h4>const :</h4><p>声明创建一个值的只读引用 (即指针)</p><p>基本数据当值发生改变时,那么其对应的指针也将发生改变,故造成 const 申明基本数据类型时</p><p>再将其值改变时,将会造成报错, 例如 const a = 3 ; a = 5 时 将会报错</p><p>但是如果是复合类型时,如果只改变复合类型的其中某个 Value 项时, 将还是正常使用</p><p><br></p><p>(1)块级作用域: 块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了 ES5 中的两个问题:</p><p>内层变量可能覆盖外层变量</p><p>用来计数的循环变量泄露为全局变量</p><p>(2)变量提升: var存在变量提升,let和const不存在变量提升,即在变量只能在声明之后使用,否在会报错。</p><p>(3)给全局添加属性: 浏览器的全局对象是window,Node的全局对象是global。var声明的变量为全局变量,并且会将该变量添加为全局对象的属性,但是let和const不会。</p><p>(4)重复声明: var声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的遍历。const和let不允许重复声明变量。</p><p>(5)暂时性死区: 在使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用var声明的变量不存在暂时性死区。</p><p>(6)初始值设置: 在变量声明时,var 和 let 可以不用设置初始值。而const声明变量必须设置初始值。</p><p>(7)指针指向: let和const都是ES6新增的用于创建变量的语法。 let创建的变量是可以更改指针指向(可以重新赋值)。但const声明的变量是不允许改变指针的指向。</p>
评论 (
0
)
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
Html/JS/CSS
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (
-
)
标签 (
-
)
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
1
https://gitee.com/DreamCoders/CoderGuide.git
git@gitee.com:DreamCoders/CoderGuide.git
DreamCoders
CoderGuide
CoderGuide
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册