javascript 变量问题
vartt='aa';functiontest(){alert(tt);//underfined;vartt='dd';alert(tt);//dd}test();第一个...
var tt = 'aa';
function test(){
alert(tt); //underfined;
var tt = 'dd';
alert(tt); //dd
}
test();
第一个位置 tt为什么会是没有定义 展开
function test(){
alert(tt); //underfined;
var tt = 'dd';
alert(tt); //dd
}
test();
第一个位置 tt为什么会是没有定义 展开
4个回答
2013-07-20
展开全部
你的tt变量连续定义了两次,页面加载完成后,编辑好的js代码不会根据你的定义顺序来给tt赋值的,只会根据你的var变量的作用域来判断赋值。可以参考:
http://www.blogjava.net/baoyaer/articles/105921.html
如想弹出可以把第二个var tt 中的var 去掉。
http://www.blogjava.net/baoyaer/articles/105921.html
如想弹出可以把第二个var tt 中的var 去掉。
更多追问追答
追问
去掉之后为什么tt的值不是dd
追答
是啊,我以前遇到过这种情况。
展开全部
已经定义了一个全局变量,局部变量就不用定义了。把var tt="dd";改为赋值语句tt="dd"
追问
alert(tt); 这里为什么会是underfined 而不是aa
追答
这可能跟代码的编译顺序有关吧,重复定义执行局部变量而忽略全局。反正变量只能定义一次,改过来之后能正常显示了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个tt为全局变量,当全局变量和局部变量重名时,局部会屏蔽全局变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
test(tt);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询