JS中var,let,const和全局污染(块作用域)

共同点(小空间可以访问到大空间):

比如:无论外部用var,let,const定义,函数当中都可以访问到,不会报错。

<script>
    // 执行以下代码不会报错
    var v = 1;
    let l = 2;
    const c = 3;
    function hd(){
        console.log(v);
        console.log(l);
        console.log(c);
    }
    hd();
</script>

和现实中比较,外部声明的变量理解为城市中的花园的树,函数内部声明的变量理解为是在自己别墅后花园种树,这么理解就很贴切并且很实用。

还有一点:如果在函数内部修改了值,那么这个值只在函数内部起作用,出了函数就会变为原来的值。(const值无法修改)

------------------------------------------------------------------

全局污染:

如果不声明直接用,那就造成全局污染,例如:web = 123;(前面没有var ,let ,const).

针对不声明直接用,可以加上严格模式:“use strict”;(不声明直接报错)。

 

-----------------------------------------------------------------

块作用域:

例子:

<script>
    //会报错,l在自己的块作用域
    //出了自己的作用域,l “消失了”
   {
       let l = 11;
   }
   console.log(l);
</script>

 

posted @ 2022-03-03 13:54  沉梦昂志_doc  阅读(117)  评论(0编辑  收藏  举报