JavaScript声明:Var、Let、Const该选谁?
前言
ES6引入了许多很棒的特性。以前开发者都是用var来声明变量,ES6引入let和const声明变量。很多初级开发者在学习阶段使用起来傻傻分不清,下面我们来详细介绍下为什么ES6会引入let和const,以及怎么使用它们。
var
使用var
声明一个变量的话,那么这个变量就属于当前的函数作用域,如果声明是发生在函数外的顶层的,那么这个变量就属于全局作用域。
var
可以被重新声明和更新。
这意味着可以通过重新初始化来更新变量的值,并且可以var
使用相同或不同的值一次又一次地声明使用关键字声明的变量。
var a = 555555;
var b = 666666;
var a = 777777;
b = 888888;
console.log(a) // 777777
console.log(b) // 888888
如果声明变量时省略var
的话,这个变量就会成为全局变量。存在变量提升
变量提升
变量提升是解释器在执行代码之前为变量和函数声明分配内存的过程。这允许我们在声明和初始化变量之前使用它。
console.log(b); //undefined
var b = 7777777;
console.log(b); //7777777
var的问题
在下面的代码示例中,全局作用域b
被块作用域b
替换了,最后打印出了666666
。如果是故意这么写的,没问题。但如果代码逻辑复杂,就会出现很多意向不到的问题。
var b = 777777
if(true){
var b = 666666
}
console.log(b) // 666666
这就是为什么引入了let和const,并推荐大家使用。
let
let
是对于上述问题的一种改进,let
是块级作用域,这意味着在块中声明的变量只能在该块中使用。在块外声明的变量是全局范围的。函数内部使用let定义后,对函数外部无影响。
示例:
let b = 777777;
function letScopeCheck(){
let c = 666666;
console.log(c); //666666
}
console.log(c) //Uncaught ReferenceError: c is not defined
letScopeCheck();
console.log(b) //777777
let不能被重新声明,但可以在范围块内更新。示例:
let c = 777777;
let c = 666666; //SyntaxError: Identifier 'c' has already been declared
if(true){
/* 这里是一个新的块,不属于重新声明 */
let c = 555555;
console.log(c) //555555
}
console.log(c) //777777
const
const
是常量,必须初始化,不能被重新声明或者修改。它也是块级作用域,类似于let。
示例:
const a = 777;//必须初始化
console.log(a) //777
总结
关键词 | 作用域 | 更新 | 重复声明 | 变量提升 |
---|---|---|---|---|
var |
函数作用域/全局作用域 | 可更新 | 可以 | 可以 |
let |
块作用域 | 可更新 | 不可 | 不可 |
const |
块作用域 | 不可更新 | 不可 | 不可 |
注意:尽可能使用const,使用let在顶部声明并初始化所有变量,避免使用var。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanfbeac
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13