関数の拡張---関数の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