0
<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->console 中,它显示:["show-hide"]

问题:

当脚本进入这一行时:DYN_WEB.Util,还没有达到var links,为什么console.log(arguments)仍然可以输出["show-hide"],不是undefined

4

2 回答 2

1

如果您想了解执行流程,可以添加一些额外的行。该getResult函数被调用就links行了。试试这个

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 
于 2013-07-04T07:35:15.453 回答
0

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

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

因此,调用流程将首先是它调用var links从它调用DYN_WEB.Util上面初始化的函数的位置,然后执行console.log.

它输出显示隐藏。

于 2013-07-04T07:35:32.137 回答