質問

JavaScriptでは、関数に対して定義された正式なパラメーターの数をどのように決定できますか?

注意してください、これはそうではありません arguments 関数が呼び出されたときのパラメーターが、関数が定義されている名前の引数の数。

function zero() {
    // Should return 0
}

function one(x) {
    // Should return 1
}

function two(x, y) {
    // Should return 2
}
役に立ちましたか?

解決

> zero.length
0
> one.length
1
> two.length
2

ソース

関数は、次のような独自のareity(長さ)を決定できます。

// For IE, and ES5 strict mode (named function)
function foo(x, y, z) {
    return foo.length; // Will return 3
}

// Otherwise
function bar(x, y) {
    return arguments.callee.length; // Will return 2
}

他のヒント

関数のアリティはその中に保存されます .length 財産。

function zero() {
    return arguments.callee.length;
}

function one(x) {
    return arguments.callee.length;
}

function two(x, y) {
    return arguments.callee.length;
}

> console.log("zero="+zero() + " one="+one() + " two="+two())
zero=0 one=1 two=2

他の答えでカバーされているように、 length プロパティはあなたにそれを伝えます。そう zero.length 0になります、 one.length 1になります two.length 2になります。

ES2015の時点で、2つのしわがあります。

  • 関数は、パラメーターリストの最後に「REST」パラメーターを持つことができます。これは、その位置またはその後の引数を真の配列に収集することができます( arguments 擬似アレイ)
  • 関数パラメーターにはデフォルト値を持つことができます

関数の条件を決定するとき、「REST」パラメーターはカウントされません。

function stillOne(a, ...rest) { }
console.log(stillOne.length); // 1

同様に、デフォルトの引数を持つパラメーターはアリティに追加されず、実際には、明示的なデフォルトがない場合でも、他の人がそれに従うことを防ぎます(サイレントデフォルトがあると想定されています undefined):

function oneAgain(a, b = 42) { }
console.log(oneAgain.length);    // 1

function oneYetAgain(a, b = 42, c) { }
console.log(oneYetAgain.length); // 1

関数アリティは、関数に含まれるパラメーターの数です。長さプロパティを呼び出すことで達成できます。

例:

function add(num1,num2){}
console.log(add.length); // --> 2

function add(num1,num2,num3){}
console.log(add.length); // --> 3

注:関数呼び出しで渡されたパラメーターの数は、関数の不条理に影響しません。

ただし、関数によって予想される引数の数を返すために使用されるアリティプロパティは、存在しなくなり、function.prototype.lengthプロパティに置き換えられています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top