[1,2,3].length peut obtenir 3, "123".length peut aussi obtenir 3, tous ceux qui connaissent un peu js le savent.
Mais qu'obtiendront eval.length, RegExp.length, "".toString.length, 1..toString.length ?
Nous obtenons respectivement 1, 2, 0 et 1. Que représentent ces nombres ?
C'est une question que de nombreux nouveaux venus dans le groupe se posent. En fait, la longueur de la fonction obtient le nombre de paramètres formels.
Jetons un coup d'œil rapide à un exemple :
test de fonction(a,b,c,d) {}
test.length // 4
N'est-ce pas très simple, mais il existe aussi des cas particuliers. Si les paramètres sont appelés via des arguments à l'intérieur de la fonction sans réellement définir les paramètres, la longueur n'obtiendra que 0.
Cette fonction peut en effet transmettre des paramètres, et les paramètres sont également appelés en interne, mais length ne peut pas connaître le nombre de paramètres transmis.
Le nombre de paramètres réels ne peut être obtenu que via arguments.length lorsque la fonction est exécutée.
Ainsi, l'attribut length d'une fonction ne peut obtenir que le nombre de ses paramètres formels, mais pas le nombre de paramètres réels.