js作用域知识点:
- 变量提升
- 不用var关键字声明的会成为全局变量
- 作用域链
<input type="button" class="btn btn-primary" value="按钮A" onclick="AA();" /><br /><br /> | |
<input type="button" class="btn btn-primary" value="按钮B" onclick="BB();" /><br /><br /> | |
<input type="button" class="btn btn-primary" value="按钮C" onclick="CC();" /><br /><br /> | |
<input type="button" class="btn btn-primary" value="按钮D" onclick="DD();" /><br /><br /> |
/* 答案是1,因为已经先有了变量b,重复声明它并不会使它被重新初始化,也不会使它的值丢失*/ | |
function AA() { | |
b = 1; | |
var b; | |
alert(b); | |
} | |
/*答案是function a() { }, 因为在第二行的语句中对a重新赋值了*/ | |
function BB() { | |
function a() { }; | |
var a; // js语法灵活,可以先赋值后声明,但为了程序有很好的可读性,建议将声明语句放到顶部 | |
alert(a); | |
} | |
/*答案是undefined 5 加了var就变成局部变量了*/ | |
function CC() { | |
var a = 10; | |
function b() { | |
alert(a); // undefined | |
var a = 5; | |
alert(a); | |
} | |
b(); //执行方法b | |
} | |
/*答案是10 5*/ | |
function DD() { | |
var a = 10; | |
function b() { alert(a); a = 5; alert(a); } | |
b(); | |
} |