3

次のコードサンプル(http://jsfiddle.net/MZwBS/にもあります)

var items = [];

items.push({
    example: function() {
        if(0 > 1) {
            return 'true';
        } else {
            return 'false';
        }
    }
});

document.write(items[0].example);

を生成します

'function () { if (0 > 1) { return "true"; } else { return "false"; } }'

それ以外の

'false'

ExtJSでこんなことができたようです。どこが間違っていたのか誰か教えてもらえますか?このような無名関数をその場で評価したいと思います。

4

3 に答える 3

3

実行するつもりですか?

document.write(items[0].example());​
于 2012-04-04T23:29:00.083 に答える
2

あなたが欲しい:

document.write(items[0].example());

括弧をスキップすると、「この関数を印刷する」と言っています。それらを持っているとき、あなたは「この関数を評価して結果を印刷する」と言っています。

于 2012-04-04T23:28:51.217 に答える
0

以下に示すように、匿名関数の後に「()」を追加することで問題を解決しました。
http://jsfiddle.net/MZwBS/7/

var items = [];

items.push({
    example: function() {
        if(0 > 1) {
            return 'true';
        } else {
            return 'false';
        }
    }()
});

document.write(items[0].example);

このコードブロックは、次の期待される結果を生成します。

'false'
于 2012-04-08T03:22:05.847 に答える