1、JS中没有块级概念唯一有块级概念的是函数体内
2、没有设置var的变量是全局变量
<span style="white-space:pre"> </span>var a = "a";
function fn3 (d) {
//var a;
console.log(a);
b = "b";
var c = "c";
function subFn () {
var e = d;
if (true) {
var f = "f";
console.log(e);
console.log(a);
}
console.log(f);
}
subFn();
}
fn3("d");
console.log(b);
通过一个混合练习来了解:
a为全局变量所以
console.log(a);都可以显示值
但是如果把函数fn3内的var a;放开,则都为undefined因为函数内的局部变量覆盖了函数外部的全局变量,而局部变量没有赋值所以为undefined subFn内函数自然也为undefined
函数fn3内的变量b没有var 所以为全局变量,所以函数外部可以访问到
因为函数subFn,在函数fn3内所以参数d可以传递实参“d”,而e创建变量在subFn内,所以e亦可访问到外部传入的参数“d”。
if没有块级元素概念,所以可以访问f