作用域

作用域是其作用的范围,主要分为全局作用域和局部作用域,全局的环境不会被回收;

function show() {}  show(),函数在执行之后,会创建一个新的环境(或者说给一块新的内存地址);如果某个环境定义的数据一直被使用,就不会被删

<script>
      function hd() {
        let n = 1;
        return function show() {
          console.log(++n);
        };
      }
      let a = hd();
      a();
    </script>

块级作用域:用var声明的变量会在全局里面,用let和const声明的变量会在块级作用域里面

let、const和var在for循环里面的区别:var没有块的概念,所以在for循环外面,也可以打印var的变量值,所以每次i值在改的时候,都是改的全局的值,

 for (var i = 0; i <= 3; i++) {
        console.log(i);//0,1,2,3
      }
      console.log(i);//0,1,2,3,4

for循环使用let的话,在外层就访问不到了

      for (let i = 0; i <= 3; i++) {
        console.log(i); //0,1,2,3
      }
      console.log(i); // i is not defined
发表评论 / Comment

用心评论~