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为什么会是没有定义
展开
 我来答
匿名用户
2013-07-20
展开全部
你的tt变量连续定义了两次,页面加载完成后,编辑好的js代码不会根据你的定义顺序来给tt赋值的,只会根据你的var变量的作用域来判断赋值。可以参考:
http://www.blogjava.net/baoyaer/articles/105921.html
如想弹出可以把第二个var tt 中的var 去掉。
更多追问追答
追问
去掉之后为什么tt的值不是dd
追答
是啊,我以前遇到过这种情况。
Mini_humour
2013-07-20 · TA获得超过223个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:171万
展开全部
已经定义了一个全局变量,局部变量就不用定义了。把var tt="dd";改为赋值语句tt="dd"
追问
alert(tt); 这里为什么会是underfined 而不是aa
追答
这可能跟代码的编译顺序有关吧,重复定义执行局部变量而忽略全局。反正变量只能定义一次,改过来之后能正常显示了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kd68cn
2013-07-20 · 超过24用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:57.6万
展开全部
第一个tt为全局变量,当全局变量和局部变量重名时,局部会屏蔽全局变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
裕达哥哥
2013-07-20 · TA获得超过1502个赞
知道小有建树答主
回答量:1224
采纳率:76%
帮助的人:163万
展开全部
test(tt);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式