试图理解一些js代码中的执行顺序

时间:2013-07-04 07:27:38

标签: javascript

<script type="text/javascript"> 
var DYN_WEB = DYN_WEB || {};
DYN_WEB.Util = (function( Ut ) {
    Ut.getResult = function ( cl, tag, el ) {
    console.log(arguments)
    }
return Ut;
})( DYN_WEB.Util || {} );
var links = DYN_WEB.Util.getResult('show-hide');
</script>  

在chrome-&gt;控制台中,它显示:["show-hide"]

问题:

当脚本转到此行时:DYN_WEB.Util,尚未到达var links,为什么console.log(arguments)仍然可以输出["show-hide"],而不是undefined

2 个答案:

答案 0 :(得分:1)

如果您想了解执行流程,可以添加一些额外的行。在getResult行上调用links函数。试试this

var DYN_WEB = DYN_WEB || {};
DYN_WEB.Util = (function (Ut) {
    Ut.getResult = function (cl, tag, el) {
        console.log(arguments)
    }
    return Ut;
})(DYN_WEB.Util || {});
console.log("before links");
var links = DYN_WEB.Util.getResult('show-hide');
console.log("after links");

控制台输出将是:

before links
["show-hide"]
after links 

答案 1 :(得分:0)

DYN_WEB.Util是一个函数,不会自行执行。 所以你错了,因为它无法到达var链接。

首先,它会从var links调用DYN_WEB.Util函数到达它,它将传递您正在使用的参数。

因此,调用流程首先会调用var links,调用DYN_WEB.Util函数进行初始化,然后执行console.log

然后输出show-hide。