0

fooは自分自身を呼び出す関数であり、その中にbar自分自身も呼び出す関数があります。それから私は公開してbarいます。しかし、後で「foo」が であると言うのはなぜundefinedですか?

var foo = (function(){
    var bar = (function(t){
        console.log(t);
    })('test 1');

    return bar;
})();

console.log(foo); // output: undefined

アップデート:

私はこのようなことをしたいと思います:

var foo = (function foo(){
    (function bar(t){
        console.log(t);
    })('test 1');

    return { bar : bar };
})();

foo.bar('test 2');

barは認識されていないだけです..一度自己実行することはできないようですが、それを戻り値として渡す..

4

8 に答える 8

0

tbar 関数は何も返さないためです。JavaScript で戻り値を持たない関数は undefined を返します。

bar を次のように変更した場合:

var bar = (function(t){
    return t;
})('test 1');

あなたの foo は未定義ではなくなります。

于 2013-05-07T12:45:33.707 に答える