var num= 10;
fun();
function fun(){
    console.log(num);
    var num =20;

浏览器输出的结果为undefined
对其预解析
var num;
function fun(){
    var num;
    console.log(num);
    num =20;

num = 10;
fun();
这预解析是我自己分析的。求大神讲解为什么输出结果为undefined

解决方案 »

  1.   

    var语句一般会将变量声明提升至该作用域顶部,如果没有启用严格模式("use strict";)而且在全局部分没有定义的话,还会作为全局对象(比如浏览器中的window对象)下面的一个属性。您的这个例子可以这样理解:var num= 10;
    function fun(){
        var num;
        console.log(num);//此时该作用域(也就是函数体内{}括起来的部分)中,num变量虽然已经声明,但还没有赋值,所以为undefined
        num =20;
    }
    fun();
      

  2.   

    全局中不是定义了num=10么