5分钟快速掌握JS中var,让和const的异同

  

  

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

  

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

  

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

  

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

  

好了,回归我们的正题。

  

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

  

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

  

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

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

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

  


  

  

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

  

例如:         var=10;      

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

考虑以下代码片段:

        函数nodeSimplified () {   var=10;   console.log(一个);//输出10   如果(真){   var=20;   console.log(一个);//输出20   }   console.log(一个);//输出20   }      

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

  


  

  

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

  

例如:         让=10;      

      <李>这个语句允许你创建一个变量,使它的作用范围被限制在它所在的代码块。   <李>它和Java、c#等其他语言的变量类似。   
  

考虑下面的代码片段:

        函数nodeSimplified () {   让=10;   console.log(一个);//输出10   如果(真){   让=20;   console.log(一个);//输出20   }   console.log(一个);//输出10   }      

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

        函数nodeSimplified () {   让=10;   让=20;//抛出语法错误   console.log(一个);   }      

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

        函数nodeSimplified () {   var=10;   var=20;   console.log(一个);//输出20   }      

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

  

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

  


  

  

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

  

例如:         const=10;   函数nodeSimplified () {   const MY_VARIABLE=10;   console.log (MY_VARIABLE);//输出10   }      

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

  

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

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

5分钟快速掌握JS中var,让和const的异同