Tome una función de ejemplo aquí:Comprobación de los parámetros pasados utilizando nula - JavaScript
function a(b){
console.log(b != null ? 1 : 2);
}
Ese código funciona bien, mediante la impresión de 1 si pasa un parámetro, y 2 si no lo hace.
Sin embargo, JSLint me da una advertencia, diciéndome que use estrictas igualdades, es decir, !==
. Independientemente de si se pasa un parámetro o no, la función imprimirá 1 cuando se usa !==
.
Entonces mi pregunta es, ¿cuál es la mejor manera de verificar si se ha pasado un parámetro? No quiero usar arguments.length
, o de hecho utilizar el objeto arguments
.
He intentado utilizar esto:
function a(b){
console.log(typeof(b) !== "undefined" ? 1 : 2);
}
^que parecía funcionar, pero es el mejor método?
Si pasa 'undefined' entonces obtendrá un falso negativo. 'arguments.length' (o variantes) es la única forma de ver si se pasó el argumento. – Esailija
@Esailija Si no es la intención de la función trabajar explícitamente con un valor indefinido, esto debería estar bien. No es responsabilidad de las funciones detectar todas las fallas de usuario posibles. – Christoph
@Christoph Si realmente necesita saber si se aprobó un argumento, entonces no está bien. Si solo quieres saber si el argumento está vacío o lo que sea, entonces '! = Null''! == undefined' y así sucesivamente son tan frágiles y buenos, no hay nada a prueba de balas en eso. Prefiero '! = Null' para verificar' undefined' y 'null' al mismo tiempo. – Esailija