收起左侧

[前端] 理解var、let、const

0
回复
[复制链接]
avatar
  • TA的每日心情
    qdsmile擦汗
    2024-7-8 16:43
  • 签到天数: 216 天

    [LV.7]超级吧粉

    2

    主题

    0

    帖子

    494

    积分

    发表于 2023-2-27 09:22:51 | 显示全部楼层 |阅读模式
    一、var:1、提升
    1. console.log(num); // undefined
    2.     var num = 1;
    3.     var定义的变量会声明提升,可以理解为:
    4.     var num;
    5.     console.log(num);
    6.     num = 1;
    复制代码
    2、变量覆盖
    1. var num = 1;
    2.     var num = 2;
    3.     console.log(num); // 2
    4.     这段代码并不会报错,以上代码可以看成:
    5.     var num;
    6.     num = 1;
    7.     num = 2;
    8.     console.log(num); // 2
    复制代码
    3、没有块级作用域
    1. function demo(){
    2.     for(var i=0; i<3; i++){
    3.     }
    4.     console.log(i);  //3
    5.     }
    复制代码
    由于没有块级作用域,循环之后,i仍然存在
    4、var在全局作用域下声明变量会挂载在 window 上
    1. var num = 1;
    2.     console.log(window.num);  // 1
    复制代码
    5、var是具有函数作用域的
    1. var a = 1;
    2.      function fn() {
    3.     var a = 10
    4.      }
    5. fn();
    6.      console.log(a); // 1
    复制代码
    在函数中用var声明的变量和全局作用域的相同,也不会进行覆盖。
    二、let、const:
    1、const声明的变量必须赋初始值、let则不用
    2、const定义的值无法直接更改,而let定义的值可以更改
    3、letconst 定义的变量不会挂载在 window
    1. let num1 = 1
    2.     let num2 = 2
    3.     console.log(window.num1)  // undefined
    4.     console.log(window.num2)  // undefined
    复制代码
    4、支持块级作用域
    三、暂时性死区:
    1. function demo(){
    2.     console.log(num) // ReferenceError: num is not defined
    3.     let num = 1
    4. }
    复制代码
    letconst 存在暂时性死区,声明前不可使用

    参与人数 1金币 +180 收起 理由
    avatar itjc8 + 180

    查看全部评分总评分 : 金币 +180

    您需要登录后才可以回帖 登录 | 立即注册 QQ登录

    本版积分规则