zoukankan      html  css  js  c++  java
  • var和let区别简述

       因为习惯用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>

          

  • 相关阅读:
    Tornado 和 Gin 框架性能实测
    测试基础
    计算机基础
    跨域和CORS
    Django之Form和ModelForm组件
    Django之锁和事务,中间件
    Django之Ajax
    Django基础之ORM多表操作
    Django基础之cookie和session
    Django基础之ORM单表操作
  • 原文地址:https://www.cnblogs.com/tu-0718/p/11429779.html
Copyright © 2011-2022 走看看