函数中两个变量重名怎样覆盖

ni_xiao_wei 2012-09-04 11:36:10
function test(){
var a=10;
var a=100;
alert(a);
}
test();//输出100
function test2(){
var a=10;
var a;
alert(a);//输出10
}
test2();
第二个函数 怎么不是undefined 啊
...全文
205 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
再次声明变量,但是没有赋值,它仍用原来100的值。

licip 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
var a=100;
var a; //再次声明变量,但是没有赋值,它仍用原来100的值。
http://www.w3school.com.cn/js/js_variables.asp
重新声明 JavaScript 变量
如果您再次声明了 JavaScript 变量,该变量也不会丢失其原始值。
[/Quote]+1
未知数 2012-09-04
  • 打赏
  • 举报
回复
js中变量的声明和赋值不是同时进行的;

声明是在函数最开始进行的,所以你将a变量声明两次,但最终只有一个,赋值后就是10了,也就是说看着第二个var a声明在第一次赋值后面,但它实际在函数最初就执行了。

scscms太阳光 2012-09-04
  • 打赏
  • 举报
回复
var a=100;
var a; //再次声明变量,但是没有赋值,它仍用原来100的值。
http://www.w3school.com.cn/js/js_variables.asp
重新声明 JavaScript 变量
如果您再次声明了 JavaScript 变量,该变量也不会丢失其原始值。
oggmm 2012-09-04
  • 打赏
  • 举报
回复
可以去了解一下javascript预编译
oggmm 2012-09-04
  • 打赏
  • 举报
回复
其实等价于下面

function test() {
var a;
a = 10;
a = 100;
alert(a);
}
test(); //输出100
function test2() {
var a;
a = 10
alert(a); //输出10
}
test2();
gf05011 2012-09-04
  • 打赏
  • 举报
回复
不错,又学习到了新知识
泡泡鱼_ 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
其实等价于下面


JScript code
function test() {
var a;
a = 10;
a = 100;
alert(a);
}
test(); //输出100
function test2() {
……
[/Quote]

预编译的问题。前几天才受的熏陶来着。上面的这个解释应该是最好理解的

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧