本帖最后由 wk84190133 于 2013-02-25 23:09:26 编辑

解决方案 »

  1.   

    LZ的代码跟下面这段代码是等价的。var num = 10;
    function test(){
      var num;
      alert(num);//这里num怎么会是undefined?
      num = 20;
    }这跟JS的作用域有关,在函数内声明的变量,在整个函数内可见,哪怕是在最后声明,如果在使用前没有赋值,结果就是undefined。
      

  2.   

    首先   var  num=10  是个全局变量 ,num=20  则是局部变量 ,函数执行的过程 是 :test首先会创建一个 活动对象 来保存 局部变量,其位于作用域链的第一级,然后第二级 保存的就是全局变量,也就是num=10。查询变量的时候 会从作用域的顶级开始查找,也就是先看局部变量,你这里虽然定声明了局部变量,但是没有赋值 ,js返回的默认值就是undefined。如果函数的参数 没有赋值,对象的属性 没有赋值  也会返回undefined,这三种是 js中常见的返回undefined的情况。
      

  3.   

    你在函数里alert()的num是函数下边申明的num  不是全局的那个  此时你的num没赋值  所以undefined
      

  4.   

    http://blog.csdn.net/hch126163/article/details/6022557
    javascript 预编译 作用域