var和let以及const的区别

1 篇文章 0 订阅

var和let以及const的区别
在这里插入图片描述

一、var是ES6之前的变量声明方式,使用var声明的变量,其作用域为该语句所在的函数内,并且存在变量提升现象。

由于变量提升的关系,我们可以看到在if语句里面,我们在 a赋值前将其输出并没有报错。还有就是我们在if语句外面再次输出a,居然可以正常输出。这和我们学习的其他语言感觉出现了冲突。于是ES6之后新增了新的变量声明方式。let
 <script>
        if (true) {
            console.log(a);
            var a = 3;
        }
        console.log(a);
    </script>

在这里插入图片描述

二、使用let 声明的变量,其作用域为该语句所在代码块内,不存在变量提升。

1、let声明的变量只在所处于的块级有效
我们使用let在if语句里面声明了一个a,在if语句外输出时就会报错 a is not defined。
这就是因为其中的a只在所处的块级区域有效(及if语句的大括号内)。(使用var声明的变量)不具有块级作用域特性
 if (true) {
            let a = 10;
        }
        console.log(a); // 报错,a is not defined
2、let 不存在变量提升
不同于使用var声明的变量,这里会报错  就是因为let声明的变量不存在变量提升。于是在定义之前输出数据,就会报错(提示a没有初始化)。
 console.log(a); 
        let a = 20;
3、暂时性死区:let声明的变量会被整体绑定在这个块级区域不再受外部代码的影响
 var tmp = 123;
        if (true) {
            console.log(tmp);
            let tmp = 3;
        }

在这里插入图片描述

三、const 声明常量,常量就是值(内存地址)不能变化的量。

1、它与const一样具有块级作用域

2、声明常量时必须赋值,如果常量未赋值则会报错“Missing initializer in const declaration”
        const PI;  //Missing initializer in const declaration

3、常量赋值后,值不能修改
要是修改后也会报错“const PI = 3.14;
    PI = 100; //Assignment to constant variable.”
const PI = 3.14;
        PI = 100; //Assignment to constant variable.

四、什么时候使用它们呢?

1、在我们编写程序的过程当中,如果存储的值不需要变化,尽量使用 const 关键字。比如函数的定义,或者数学中一些恒定不变的值,如PI。因为使用const关键字声明的值不能变化,JavaScript解析引擎不需要实时监控值的变化,所以const关键字要比let关键字效率高。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值