1

次の関数を含む JavaScript ファイルで MVC4 のバンドルを実行しようとしました。

$.fn.ApplyBehavior = function (behaviors) {
    var fns = behaviors.split(",");
    var $t = $(this);
    $.each(fns, function (i, o) {
        try {
            var callfn = eval(o);
            if (typeof callfn == 'function') {
                callfn.call($t);
            }
        } catch (e) {
            // faill silently
            console.log(o);
            console.log(e.stack);

        }
    });
    return this;
}

バンドルから生成された結果は次のようになります。

$.fn.ApplyBehavior = function(n) {
    var t = n.split(","), i = $(this);
    return $.each(t, function(i, o) {
        try {
            var callfn = eval(o);
            typeof callfn == "function" && callfn.call(i)
        } catch (e) {
            console.log(o), console.log(e.stack)
        }
    }), this
},

問題は、出力結果で「i」を使用することから発生します。「each」ループ内で「i」を既に使用しているため、「i」をコンテキストとして関数を呼び出していることは明らかです。

最適化の最新の NuGet パッケージ (1.1.0-Beta1) と通常のバンドル コードを使用しています。

bundle = new ScriptBundle("~/scripts/uijs").Include("~/js/ui.web.js");
bundles.Add(bundle);

私は何か間違ったことをしていますか?「i」の使用を事前に検出しないのはなぜですか? これがバグである場合、どのように報告すればよいですか?

4

1 に答える 1