5分钟掌握var,let和const异同
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
原文出处:https://dzone.com/articles/javascript-difference-between-var-let-and-const-ke
这个话题对于一些老鸟来说可能根本算不上疑问,但对于新手来说也许除了最常见的var之外,let和const较少使用的机会。
所以在本文中,我将会通过一些例子来为大家介绍如何在Javascript中灵活使用var、let和const这些关键字来定义变量,以及这些关键字它们之间有什么异同。
如果你懒得看下面的代码,那我可以先把概念结论说出:
var定义的变量可被更改,如果不初始化而直接使用也不会报错
let定义的变量和var类似,但作用域在当前声明的范围内
const定义的变量只可初始化一次且作用域内不可被更改,使用前必须初始化
下面我将通过示例的形式来详细为大家介绍它们三者之间的异同:
Varvar用以声明一个变量,并且同时我们可以在声明语句中初始化所声明的变量。
例如:
vara=10;
变量的声明,会在代码被执行之前被处理。
用var
声明的JavaScript变量,其可用范围在当前执行上下文。
在函数外声明的JavaScript变量,其作用范围是全局。
考虑以下代码片段:
functionnodeSimplified(){vara=10;console.log(a);//输出10if(true){vara=20;console.log(a);//输出20}console.log(a);//输出20}
在上面的代码中,你可以发现,当变量a在if代码段里被更新时,它的值被全局更新了,因此在经过了if代码后,被更新的值仍然被保留着。这与其他语言中的全局变量有点类似。但是,在使用这个功能时要非常小心,因为它有可能会覆盖一个已有的值。
letlet语句在一个块级范围里声明一个局部变量。和var
类似,我们可以在声明时初始化它的值。
例如:
leta=10;
这个语句允许你创建一个变量,使它的作用范围被限制在它所在的代码块。
它和Java、C#等其他语言的变量类似。
考虑下面的代码片段:
functionnodeSimplified(){leta=10;console.log(a);//output10if(true){leta=20;console.log(a);//output20}console.log(a);//output10}
它和大多数语言中我们所见的表现行为是一致的。
functionnodeSimplified(){leta=10;leta=20;//抛出语法错误console.log(a);}
错误信息:"未捕获的异常:标识符'a'已经被声明过。" 但如果使用var
就没事:
functionnodeSimplified(){vara=10;vara=20;console.log(a);//输出20}
使用let
语句,可以很好的维护变量的作用范围。当使用内部函数时,let
语句让你的代码更整洁。
我希望上面的例子能帮你更好地理解var
和 let
。如果有任何疑问,请在评论区留言。
const语言中的变量只能被赋值一次,然后就不能在被赋值。const
语句的作用范围和let
语句一样。
例如:
consta=10;functionnodeSimplified(){constMY_VARIABLE=10;console.log(MY_VARIABLE);//输出10}
照例,命名规范指出我们应该用大写字母声明常量。当然,const a = 10 在上面的代码中会的起到相同的作用。为了让代码长期可维护,命名规范还是值得遵守的。
问题:如果给一个const变量重新赋值会发生什么? 考虑下面的代码:
functionnodeSimplified(){constMY_VARIABLE=10;console.log(MY_VARIABLE);//输出10MY_VARIABLE=20;//抛出类型错误console.log(MY_VARIABLE);}
错误信息:"未捕获的类型错误:给const变量赋值"。
当我们尝试给已有的const变量赋值时,这段代码会抛出一个错误。
介绍就到此结束,希望这篇短小精悍的文章能够帮助到各位更好的理解在Javascript中声明变量时使用不同关键字上到底有何异同。
本文是由葡萄城技术开发团队发布,转载请注明出处:葡萄城官网
了解开放易用的 Web 生成平台,请前往活字格Web应用生成平台
了解可嵌入您系统的在线 Excel,请前往SpreadJS纯前端表格控件
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。