5分钟快速掌握JS中var、let和const的异同

 更新时间:2018年09月19日 11:01:51   作者:葡萄城官网  
在javascript中有三种声明变量的方式:var、let、const,这个是对新手们来说应该掌握的知识,所以这篇文章主要给大家介绍了关于如何通过5分钟快速掌握JS中var,let和const的异同,需要的朋友可以参考下

前言

首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?

ECMAScript是一个国际通过的标准化脚本语言。JavaScript由ECMAScript和DOM、BOM三者组成。可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。

2011 年,ECMAScript 5.1 版发布。之前我们大部分人用的也就是ES5

2015 年 6 月,ECMAScript 6 正式通过,成为国际标准。

好了,回归我们的正题。

本文说的这个话题对于一些老鸟来说可能根本算不上疑问,但对于新手来说也许除了最常见的var之外,let和const较少使用的机会。

所以在本文中,我将会通过一些例子来为大家介绍如何在Javascript中灵活使用var、let和const这些关键字来定义变量,以及这些关键字它们之间有什么异同。

如果你懒得看下面的代码,那我可以先把概念结论说出:

  • var定义的变量可被更改,如果不初始化而直接使用也不会报错
  • let定义的变量和var类似,但作用域在当前声明的范围内
  • const定义的变量只可初始化一次且作用域内不可被更改,使用前必须初始化

下面我将通过示例的形式来详细为大家介绍它们三者之间的异同:

Var

var用以声明一个变量,并且同时我们可以在声明语句中初始化所声明的变量。

例如:

var a = 10;
  • 变量的声明,会在代码被执行之前被处理。
  • 用var声明的JavaScript变量,其可用范围在当前执行上下文。
  • 在函数外声明的JavaScript变量,其作用范围是全局。

考虑以下代码片段:

function nodeSimplified() {
 var a =10;
 console.log(a); // 输出 10
 if(true) {
 var a=20;
 console.log(a); // 输出 20
 }
 console.log(a); // 输出 20
}

在上面的代码中,你可以发现,当变量a在if代码段里被更新时,它的值被全局更新了,因此在经过了if代码后,被更新的值仍然被保留着。这与其他语言中的全局变量有点类似。但是,在使用这个功能时要非常小心,因为它有可能会覆盖一个已有的值。

let

let语句在一个块级范围里声明一个局部变量。和var类似,我们可以在声明时初始化它的值。

例如:

let a = 10;
  • 这个语句允许你创建一个变量,使它的作用范围被限制在它所在的代码块。
  • 它和Java、C#等其他语言的变量类似。

考虑下面的代码片段:

function nodeSimplified() {
 let a =10;
 console.log(a); // output 10
 if(true) {
 let a=20;
 console.log(a); // output 20
 }
 console.log(a); // output 10
}

它和大多数语言中我们所见的表现行为是一致的。

function nodeSimplified() {
 let a =10;
 let a =20; // 抛出语法错误
 console.log(a); 
}

错误信息:"未捕获的异常:标识符'a'已经被声明过。" 但如果使用var就没事:

function nodeSimplified() { 
 var a =10; 
 var a =20; 
 console.log(a); // 输出 20 
}

使用let语句,可以很好的维护变量的作用范围。当使用内部函数时,let语句让你的代码更整洁。

我希望上面的例子能帮你更好地理解var和 let。如果有任何疑问,请在评论区留言。

const

const语言中的变量只能被赋值一次,然后就不能在被赋值。const语句的作用范围和let语句一样。

例如:

const a = 10;
function nodeSimplified() {
 const MY_VARIABLE =10;
 console.log(MY_VARIABLE); // 输出 10 
}

照例,命名规范指出我们应该用大写字母声明常量。当然,const a = 10 在上面的代码中会的起到相同的作用。为了让代码长期可维护,命名规范还是值得遵守的。

问题:如果给一个const变量重新赋值会发生什么? 考虑下面的代码:

function nodeSimplified() {
 const MY_VARIABLE =10;
 console.log(MY_VARIABLE); // 输出 10
 MY_VARIABLE =20;  // 抛出类型错误
 console.log(MY_VARIABLE); 
}

错误信息:"未捕获的类型错误:给const变量赋值"。

当我们尝试给已有的const变量赋值时,这段代码会抛出一个错误。

介绍就到此结束,希望这篇短小精悍的文章能够帮助到各位更好的理解在Javascript中声明变量时使用不同关键字上到底有何异同。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • 纯JS前端实现分页代码

    纯JS前端实现分页代码

    这篇文章主要介绍了纯JS前端实现分页代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • js,jQuery 排序的实现代码,网页标签排序的实现,标签排序

    js,jQuery 排序的实现代码,网页标签排序的实现,标签排序

    js,jQuery 排序的实现,网页标签排序的实现,标签排序,需要的朋友可以参考下。
    2011-04-04
  • java必学必会之static关键字

    java必学必会之static关键字

    java必学必会之static关键字,static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,下面结合大家一起学习static关键字
    2015-12-12
  • js判断两个数组相等的5种方法实例

    js判断两个数组相等的5种方法实例

    再最近的一次实际项目开发中,又遇到了需要对两个数组内容进行比较的需求,索性整理下,这篇文章主要给大家介绍了关于js判断两个数组相等的5种方法,需要的朋友可以参考下
    2022-05-05
  • 基于JavaScript概括浏览器方向的优化

    基于JavaScript概括浏览器方向的优化

    这篇文章主要介绍了JavaScript浏览器方向的优化,文章围绕主题展开详细的内容介绍具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • JS+canvas动态绘制饼图的方法示例

    JS+canvas动态绘制饼图的方法示例

    这篇文章主要介绍了JS+canvas动态绘制饼图的方法,结合具体实例形式分析了js+canvas实现饼状图形绘制的相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • input file上传 图片预览功能实例代码

    input file上传 图片预览功能实例代码

    input file上传图片预览其实很简单。今天小编就通过本文给大家介绍input file上传 图片预览功能的实现代码,比较简单,对input file 上传预览功能感兴趣的朋友参考下吧
    2016-10-10
  • JS不完全国际化&本地化手册 之 理论篇

    JS不完全国际化&本地化手册 之 理论篇

    最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求——国际化&本地化。熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已。趁着这个机会好好学习整理一下,为后面的技术选型做准备
    2016-09-09
  • bootstrap表单按回车会自动刷新页面的解决办法

    bootstrap表单按回车会自动刷新页面的解决办法

    这篇文章主要介绍了bootstrap表单按回车会自动刷新页面的问题及解决办法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • 浅谈JavaScript中定义变量时有无var声明的区别

    浅谈JavaScript中定义变量时有无var声明的区别

    这篇文章主要介绍了JavaScript中定义变量时有无var声明的区别分析以及示例分享,需要的朋友可以参考下
    2014-08-08

最新评论