var、let、const三者区别?

7 篇文章 0 订阅

一点碎碎念:这篇文章是学js的时候现在网上看了一部分视频,画思维导图复习所学知识的时候,准备看红宝书再增进一部了解之后,发现书上基本都是用的let来声明变量当时产生的疑问【因为我看的b站视频都是采用var来声明变量】,于是有了这篇文章。纪念第一篇发出的博客。

共同点:都能声明变量

varletconst
作用域函数作用域块作用域块作用域
声明提升不能不能
重复声明不能不能
全局声明时为window对象的属性不是不是
  • var

    • ECMAScript6 增加了let 和 const 之后要尽可能少使用var。因为let 和 const 申明的变量有了更加明确的作用域、声明位置以及不变的值。
    • 优先使用const来声明变量,只在提前知道未来会修改时,再使用let。
  • let

    • 因为let作用域为块作用域!!!!【得要时刻记住这一点】
      • 不能进行条件式声明
      • for循环使用let来声明迭代变量不会导致迭代变量外渗透。
  • const

    • 声明时得直接初始化变量,且不能修改const声明的变量的值

      • 该限制只适用于它指向的变量的引用,如果它一个对象的,则可以修改这个对象的内部的属性。

        //例子:
        const person = {};
        person.name = "Xin";
        
        //以上代码并不会报错
        /*
         * 我的理解:JS的变量时直接保存在栈内存的,而对象是保存在堆中的,
         * 其中person中储存的是这个对象在堆中的首地址,
         * 对象中属性的改变并不会影响首地址的变化,
         * 所以对象可以突破这个限制。
         */
        
        //而如果
        const a = "Hello";
        //变量a指向的是"Hello"这个变量值,存储的值一旦改变了(即改变了"Hello"),则会破坏const声明的限制。
        
  • 其他:

    • 关键字声明的并不是不同类型的变量,而是指出变量在相关作用域如何存在

      • //下述两组语句会有语法错误
        var name;
        let name;	//SyntaxError
        
        let age;
        var age;	//SyntaxError
        

参考:红宝书

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值