浏览器控制台环境:一: var a = function(num){
b(num);
}
a(1); var b = function(num){ console.log(num)
}二: function a(num){ console.log(num)
}
a(1); function b(num){ console.log(num)
}记得在高程看过,function定义的函数会前置,而var定义的函数只是声明会前置。那么代码二无疑是可以打印出1的;但是代码一也能打印出1,我不明白的是当a调用的时候,b函数还未声明,此时为何可以打印出1呢?另外:var c = (function(){ var init = function(){
a(1);
}; var a= function(num){
b(num);
}; var b =function(num){ console.log(num);
}; return{ init: init
};
})();
c.init();init在a之前声明,为何能调用a?
1 回答

慕沐林林
TA贡献2016条经验 获得超9个赞
第一段代码绝不可能打印出1
第二段代码你是直接返回了
init
,那时候它里面还没运行,到最后c.init()
的时候才运行了,然后才运行里面的a(1);
,这当然是没有问题的。
添加回答
举报
0/150
提交
取消