(1) var i=0;这个i如果在if 或者在for里相当于什么还是局部变量?如果在函数test里在创建一个函数这个i是否可以调用?简单的说就是比如创建funcition text(0) 定义局部变量var i=0.只要在test函数中不管其中包含多少函数,这个i都会有效是吧?在子函数里直接调用就可以是吧?那么第二个问题如果在test的子函数中声明一个变量,这个变量是否依然可以在其他子函数中使用呢?<html>
<head>
<script type="text/javascript">
function test(o) {
var i = 0;
if (typeof o == "object") {
var j = 0;
for (var k = 0; k < 10; k++)
{
document.write(k);
}
document.write(k); //还可以访问到k为10
}
document.write(j); //还可以访问到j为0
}
var o = new Object();
test(o);
</script>
</head>
</html>(2) 为什么第一个alert(scope)显示undefined,不是外面有全局函数了吗?<html>
<head>
<script type="text/javascript">
var scope = "global";
function f() {
alert(scope); //显示undefined
var scope = "local";
alert(scope);
}
f();
</script>
</head>
</html>(3)没错我就是(2).我又来了JS有hoisting这个东西也就是变量声明提升。var scope=local应该挤到第一个位置来,那么就意味着先声明后执行。为什么在这里会无效呢?<html>
<head>
<script type="text/javascript">
var scope = "global";
function f() {
alert(scope); //显示undefined
var scope = "local";
alert(scope);
}
f();
</script>
</head>
</html>
2 回答
柠檬酸钠
TA贡献331条经验 获得超534个赞
函数内因为有var scope = 'local',所以在外面的申明无效,所以就成undefined了,我也是今天刚知道的http://www.imooc.com/wenda/detail/320994
把var去掉就正常了
添加回答
举报
0/150
提交
取消