3

他の関数から呼び出すためにアクセスでき、宣言されたときに自己実行する関数が必要です。

お気に入り:

function some(var_one, var_two)
{
    // do something
}(var_one, var_two); // declare and execute (doesn't work)

function add_pair()
{
    // do something
    some(James, Amber);
}

これを行うための適切な構文は何ですか?

4

2 に答える 2

5

関数宣言を呼び出すことはできません。宣言に続く括弧のペアは、まったく何もしません。次のようなことができます。

var some;
(some = function (var_one, var_two) {
    console.log(var_one, var_two);
})("a", "b");

​some("b", "c");​​​​

上記の例では、"a, b" の後に "b, c" が続きます。しかし、それは少し面倒に見えます。あなたが持っているものに固執し、通常のように関数を呼び出すことができます:

function some(var_one, var_two) {
    console.log(var_one, var_two);
}
some("a", "b");

アップデート

関数宣言を式に変更すると (上記の最初の例で起こっていることです) 、ソースで宣言されているように見えるに関数を呼び出すことができなくなります。それらが表示され、割り当てがその場で行われます。関数宣言を使用すると、次の例は完全に機能します。

some("a", "b"); // Call it before it appears to be declared
function some(var_one, var_two) {
    console.log(var_one, var_two);
}

宣言と呼び出しを 1 つに組み合わせる必要がある理由がまったくわかりません。

于 2012-11-01T14:46:34.543 に答える
0

いいえ、宣言と実行を同時に行うことはできません (IE で 2 つの異なる関数を作成する場合を除く)。http://kangax.github.com/nfe/をご覧ください

関数に戻り値がない場合は、それを利用して関数自体を返すことができ、変数に割り当てられたすぐに実行される名前付き関数式になります。

var someGlobal = (function some(args) {
    // do something
    return some;
})(now_args);

// then
someGlobal(James, Amber);

物事を明確にするために、宣言と呼び出しを使用することをお勧めします。

于 2012-11-01T14:42:41.807 に答える