[1,2,3]. La longitud puede obtener 3, "123". La longitud también puede obtener 3. Cualquiera que entienda a JS lo sabe.
Pero, ¿qué se obtendrá eval.length, regexp.length, "" .ToString.length, 1..ToString.length?
Obtenga 1, 2, 0 y 1 respectivamente. ¿Qué representan estos números?
Esta es una pregunta que muchos nuevos amigos en el grupo han estado haciendo. De hecho, la longitud de la función es el número de parámetros formales.
Tomemos un breve ejemplo:
La copia del código es la siguiente:
prueba de función (a, b, c) {}
test.length // 3
prueba de función (a, b, c, d) {}
test.length // 4
¿No es muy simple, pero también hay otros especiales? Si el parámetro se llama internamente a través de argumentos y no se define ningún parámetro real, la longitud solo obtendrá 0.
La copia del código es la siguiente:
función test () {console.log (argumentos);}
test.length // 0
De hecho, esta función puede pasar parámetros, y los parámetros también se llaman internamente, pero la longitud no puede saber el número de parámetros pasados.
Los parámetros reales solo se pueden obtener a través de argumentos. Longitud cuando se ejecuta la función.
La copia del código es la siguiente:
función test () {console.log (argumentos.length);}
prueba (1,2,3); // Salida 3
prueba (1,2,3,4); // Salida 4
Por lo tanto, la propiedad de longitud de una función solo puede obtener el número de sus parámetros formales, pero no puede saber el número de parámetros reales.