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.Utilconsole.log

そして、show-hide を出力します。

于 2013-07-04T07:35:32.137 に答える