2

このmozilla ドキュメントによると、次のargumentsように設定できます。

arguments[1] = 'new value';

しかし、私はjshintそれを受け入れることを拒否します。引数を設定できますか?

これは私が今しなければならないことです:

Handlebars.registerHelper('propPartial', function(property, options) {
    var name = Ember.Handlebars.get(this, property);
    // I have to do this because arguments[0] = name; does not work, contrary to what is stated here:
    //   https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments
    var args = [], i, l;
    args.push(name);
    for (i = 1, l = arguments.length; i < l; i++) {
        args.push(arguments[i]);
    }
    return Ember.Handlebars.helpers.partial.apply(this, args);
});

更新、参考までに

@TJCrowder のおかげで、これは動作するコードですjshint

Handlebars.registerHelper('propPartial', function(property, options) {
    var name = Ember.Handlebars.get(this, property);
    var args = arguments;
    args[0] = name;
    return Ember.Handlebars.helpers.partial.apply(this, args);
});
4

2 に答える 2

6

はい、できます。JSLint が問題を抱えている JavaScript で実行できることはたくさんあります。

私はそれをお勧めしませんが、あなたはそれを行うことができます.

本当に、本当にこれを実行して を渡したい場合はjslint、それをだますことができます。

var a = arguments;
a[1] = 'new value';

arguments関数内の と任意の名前付き引数の間のリンクはルース モードで有効であることに注意してください。例えば:

function foo(a, b) {
    arguments[1] = "x"; // This line changes `b`
    console.log("a = " + a);
    console.log("b = " + b);
}

foo(1, 2);

出力

a = 1
b = x

ただし、厳密モードでは、それらはリンクされたままになりません。

function foo(a, b) {
    "use strict";

    arguments[1] = "x"; // This line does *not* change `b`
    console.log("a = " + a);
    console.log("b = " + b);
}

foo(1, 2);

出力

a = 1
b = 2
于 2013-07-31T08:27:16.703 に答える