В JavaScript вы можете получить количество аргументов, ожидаемых функцией, используя свойство length
. Это может быть полезно, когда вы являетесь автором библиотеки (наверное). Мой друг Джейсон спросил меня о конкретных вариантах использования. Я придумаю несколько и отредактирую этот пост позже.
function add (a, b) { return a + b; }
console.log(add.length); // 2
Вопрос, который я никогда не задавал себе, заключается в том, как на свойство длины влияет оператор покоя (function a (a, ...b) { }
).
Большое спасибо за Еженедельный информационный бюллетень Web Tools здесь. Луи Лазарис не только перечисляет инструменты, но также объясняет мельчайшие детали JavaScript, например, этот вопрос об операторе rest и свойстве длины функции в первом разделе информационного бюллетеня.
Так! Как оператор rest влияет на fn.length
? Давайте посмотрим на фрагмент, включенный в информационный бюллетень.
function myFunc1 (a, ...b) { } function myFunc2 (a, b, c, ...d) { } function myFunc3 (...d) { }
console.log(myFunc1.length); // 1 console.log(myFunc2.length); // 3 console.log(myFunc3.length); // 0
Как вы видите выше, оператор rest не «учитывается» в свойстве длины функции. Интересный!
Но на самом деле это заставило меня задуматься… а что тогда со значениями по умолчанию?
function myFunc1 (a = 1, b = 2) { } function myFunc2 (a = 1, b) { } function myFunc3 (a, b = 2) { }
console.log(myFunc1.length) // 0 console.log(myFunc2.length) // 0 console.log(myFunc3.length) // 1
Более или менее то же самое… не считается (и когда первый аргумент является значением по умолчанию, длина равна нулю). Полезно знать!
Это обучение ничего не меняет в мире, но я думаю, хорошо знать эти крошечные детали языка, на котором мы пишем каждый день. 🎉
Отредактировано: Мой друг Робин написал хорошее продолжение «Свойству длины функции нельзя доверять» к этой статье. Так что вы можете проверить это.
Первоначально опубликовано на www.stefanjudis.com.