您好,欢迎来到九壹网。
搜索
您的当前位置:首页var let const区别

var let const区别

来源:九壹网

       在ES5之前我们都是用var定义变量,es5之后我们现在用的比较多的是let,其中const可用于定义常量,那么它们之间有什么区别呢?

在以前的 JavaScript 版本中,只有两种声明变量的方式:使用 "var" 或者直接声明一个变量而不使用任何关键字。但是,这些方式有一些不足之处,例如变量的作用域问题提升(hoisting)问题

一、由来

   1、 作用域问题: "let" 关键字解决了 "var" 关键字的,将变量的作用域在声明它的块中。

   2、变量提升问题: "let" 关键字也解决了提升问题,确保变量只在定义之后可用。

二、区别

    1、var

          (1)语法:Es5用于定义变量

          (2)有变量提升,即未赋值的变量仍然可用,使用会得到nundefined,

                  例如:var a ;consoole.log(a)

           (3)  函数作用域:var声明的变量只在声明它的函数内部可见

         (4)可定义全局变量:如果在函数外部声明的话,则该变量是全局变量,可以在脚本的任何地方访问

         (5)不存在块级作用域:即在if语句、for循环等代码块内部声明的var变量,实际上是在函数作用域中声明的

  2、  let

           (1)语法:Es6语法定义变量

           (2)无变量提升:即未赋值的变量不可用,使用会报错

           (3)块级作用域:let 声明的变量只在当前块级作用域内有效,不会影响外层作用域的变量

           (4)循环中的作用域:在循环语句中使用 let 声明的变量会在每次循环迭代时创建一个新的变量,保证每次迭代时变量都是的。

           (5)避免变量名冲突:使用 let 声明变量可以避免变量名冲突的问题,特别是在不同的函数或块中使用同名变量时。

            (6)不允许重复声明:在同一个作用域内重复声明同名变量会报错

3、const         

           (1)块级作用域:const的作用域也是在块级中,和let相同。

           (2)不会声明提升:同let关键字相同,const声明的变量必须在声明之后才能访问。

           (3)不可更改:const声明的变量必须初始化,并且一旦赋值后就不能再更改。

          注意:实际上用const定义的对象仍然是可更改的,不过如果后面更改了,vscode是会语法飘红提示的 。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务