您现在的位置是: 博客首页 > 前端 前端

JavaScript var和let区别

SU博客网 2020-11-12 15浏览 转载

因为习惯用var声明变量,以至于ES6出了let来替代var,我依然继续用var,直到后来慢慢了解let之后,开始尝试使用

不同点:

    ①:var属于ES5规范,let属于ES6规范

    :var有预处理机制,let没有。预处理机制也就是常说的声明提前

        声明提前:不管变量被声明在函数什么位置,所有变量声明都会被提升至函数顶部(变量声明指 var a; 即声明还未赋值)

        比如声明变量a并赋值为1,即 var a = 1;  则 var a;会被提升至函数顶部 (只是a被提前,a的值1不会被提前)

        注:1. 在声明变量时一定要初始化 ,初始化指 var a = 1; (声明并赋值 

               2. 即使在函数内部,声明变量时一定要加上var,不要只写 a = 1; 否则变量a会自动升为全局变量

    

下面立即函数执行后,控制台不会打印出1,而是undefined,因为只有声明被提前,值没有

<script>
    (function() {
        console.log(a);
        var a = 1;
    })()
</script>

 

下面立即执行函数执行后,控制台不会打印出1undefined,而是报错,因为let声明的变量不会被提前

<script>
    (function() {
        console.log(a);
        let a = 1;
    })()
</script>

 

 

    ③:作用域的不同,var是全局作用域,let是块级作用域 

下面代码控制台会打印出1

<script>    
    if(true) {
        var a = 1;
    }
    console.log(a);
</script>

 

下面代码控制台不会打印出1,会报错,提示a没有定义(let定义的变量只在{}里才能访问到)

 

<script>
    if(true) {
        var let = 1;
    }
    console.log(a);
</script>

 

此文章转载于:https://www.cnblogs.com/tu-0718/p/11429779.html 

点赞 0

发表评论

欢迎您:

我的名片

SU博客网
SU博客网站是一个IT技术分享的网站,也是开发中的一个笔记,遇见每个问题都会记录下来,让大家更轻易的解决问题。

站点信息

  • 网站程序:Java
  • 博客名称:SU博客网
  • 文章统计34
  • 标签总数10
  • 分类总数4
  • 留言数量0

QQ 交流群