関数の拡張---関数のlengthプロパティ

640 ワード

デフォルト値が指定されると、関数のlengthプロパティは、デフォルト値が指定されていないパラメータの数を返します.つまり、デフォルト値を指定すると、lengthのプロパティが歪んでしまいます.
(function (a) {}).length // 1
(function (a = 5) {}).length // 0
(function (a, b, c = 5) {}).length // 2

これは、length属性の意味は、関数が受信するパラメータの個数を予想することである.あるパラメータがデフォルト値を指定すると、入力されるパラメータの数は含まれません.同様に,後述するrestパラメータもlength属性に計上されない.
(function(...args) {}).length // 0

デフォルト値が設定されているパラメータが末尾パラメータでない場合、length属性も後のパラメータに計上されません.
(function (a = 0, b, c) {}).length // 0
(function (a, b = 1, c) {}).length // 1