この配列を関数に文字列として渡す方法を教えてください。このコードは機能しませんが、私は何をしようとしているのかを示していると思います。配列を別の引数文字列に変換する
var strings = ['one','two','three'];
someFunction(strings.join("','")); // someFunction('one','two','three');
ありがとう!
この配列を関数に文字列として渡す方法を教えてください。このコードは機能しませんが、私は何をしようとしているのかを示していると思います。配列を別の引数文字列に変換する
var strings = ['one','two','three'];
someFunction(strings.join("','")); // someFunction('one','two','three');
ありがとう!
apply()
を使用してください。
var strings = ['one','two','three'];
someFunction.apply(null, strings); // someFunction('one','two','three');
あなたの関数は、オブジェクトのスコープを気にした場合、あなたはthis
ではなくnull
の最初の引数として設定されるようにしたいと思うものを渡します。
解決方法は単純ですが、JavaScriptの各関数には "apply"というメソッドがあり、渡す引数を配列として取ります。
ので:オブジェクトのないページではその機能だけであれば適用で
var strings = ["one", "two", "three"];
someFunction.apply(this, strings);
「これは」そうでない場合、あなたがしたい範囲を通過し、その後、これをnullに設定し、範囲を示し、それを呼び出すときのメソッド。
ターンでは、someFunctionの内側に、あなたはあなたのコードを記述します。このような何か:
var strings = ["one", "two", "three"];
someFunction(...strings);
参照:あなたは特別な '非構造' 演算子を使用することができますES6 JavaScriptが
function someFunction() {
var args = arguments; // the stuff that was passed in
for(var i = 0; i < args; ++i) {
var argument = args[i];
}
}
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_operatorたりすることができますES5 JavaScriptがhttp://www.2ality.com/2015/01/es6-destructuring.html
:
var strings = ["one", "two", "three"];
someFunction.apply(this, strings);
また、「null」はES5で呼び出しまたは適用に有効なパラメータではありません。 –
Nullはes5の有効な引数であり、es3ではグローバルオブジェクトで置き換えられます。いくつかの実装上の違いがありますが、nullが有効です。https://esdiscuss.org/topic/function-prototype-apply-function-prototype-call-with-undefined-or-null-as-thisarg –