5分钟掌握var,let和const异同

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
原文出处:https://dzone.com/articles/javascript-difference-between-var-let-and-const-kejavascript

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

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

若是你懒得看下面的代码,那我能够先把概念结论说出:函数

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

下面我将经过示例的形式来详细为你们介绍它们三者之间的异同:工具

Var

var用以声明一个变量,而且同时咱们能够在声明语句中初始化所声明的变量。开发工具

例如:spa

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

考虑如下代码片断:code

复制代码

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代码后,被更新的值仍然被保留着。这与其余语言中的全局变量有点相似。可是,在使用这个功能时要很是当心,由于它有可能会覆盖一个已有的值。ip

let

let语句在一个块级范围里声明一个局部变量。和var相似,咱们能够在声明时初始化它的值。ci

例如:

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中声明变量时使用不一样关键字上到底有何异同。

相关文章
相关标签/搜索