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是会语法飘红提示的 。

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值