藏红
2015-05-06 04:14
采纳率: 75%
浏览 1.7k
已采纳

关于javascript的一个问题

var a =123; function f() { alert(a); var a =1; alert(a); } f();

这段代码为什么第一个 alert出来的是 undefined???

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • danielinbiti 2015-05-06 04:19
    已采纳
     var a =123; 
    function f() { 
    alert(a); //这个a是函数f内的A不是全局变量,js在同一个域内,会把所有var要申明的变量先申明了。
    var a =1; 
    alert(a); 
    } f();
    
    所以上面代码也就相当于
    var a =123; 
    function f() { 
    var a;
    alert(a); //这个a是函数f内的A不是全局变量,js在同一个域内,会把所有var要申明的变量先申明了。
    a =1; 
    alert(a); 
    } f();
    
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2015-05-06 04:24

    因为你在同一个作用域当中又定义了一个a
    你访问的不是全局的a
    因为局部a之前没初始化,就没有定义了。
    var a =123; function f() { alert(a); } f();
    这就不会报错了。

    评论
    解决 无用
    打赏 举报
  • threenewbee 2015-05-06 04:26
    评论
    解决 无用
    打赏 举报
  • 逝_去_的_光_阴 2015-05-06 05:20

    把function f()里var a的var删掉就正常了 Lz想测试什么?
    变量的作用域?试一下传参?

     var a =123;function f(a) { alert(a); var a =1; alert(a); } f(a);
    
    评论
    解决 无用
    打赏 举报
  • 生活观察官 2015-05-06 09:00

    因为局部a之前没初始化,就没有定义了。

    评论
    解决 无用
    打赏 举报
  • forthedamn 2015-05-07 11:04

    变量申明提前,但是还没有赋值

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题