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>