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>

浙公网安备 33010602011771号