2013-07-04 101 views
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> 

在鍍鉻>控制檯執行順序,它表明:["show-hide"]試圖瞭解一些JS代碼

問:

當腳本進入這一行:DYN_WEB.Util,沒有達到var links還,爲什麼console.log(arguments)仍然可以輸出["show-hide"],而不是undefined

回答

1

如果您想了解執行流程,可以添加一些額外的行。在links行上調用getResult函數。嘗試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 
0

DYN_WEB.Util是一個功能,將不執行本身。 所以你錯了,它沒有達到var鏈接。

首先它會到達var links,它將調用DYN_WEB.Util函數,它將傳遞您正在使用的參數。

因此,呼叫流程將首先呼叫var links,從DYN_WEB.Util函數初始化上面,然後執行console.log

並輸出show-hide。