Weźmy funkcję przykład tutaj:Sprawdzanie parametrów przekazanych korzystających null - JavaScript
function a(b){
console.log(b != null ? 1 : 2);
}
Ten kod działa poprawnie, drukując 1 jeśli przekazać parametr i 2, jeśli nie.
Jednak JSLint ostrzega mnie, mówiąc mi, że zamiast tego użyję ścisłych równości, tj. !==
. Niezależnie od tego, czy parametr zostanie przekazany, czy nie, funkcja wydrukuje 1, gdy używasz !==
.
Moje pytanie brzmi: jaki jest najlepszy sposób sprawdzenia, czy parametr został przekazany? Nie chcę używać arguments.length
, ani w rzeczywistości używać obiektu arguments
w ogóle.
Próbowałem za pomocą tego:
function a(b){
console.log(typeof(b) !== "undefined" ? 1 : 2);
}
^że wydawało się do pracy, ale jest to najlepszy sposób?
Jeśli przekażesz 'undefined', wówczas otrzymasz fałszywy wynik negatywny. 'arguments.length' (lub warianty) to jedyny sposób sprawdzenia, czy argument został przekazany. – Esailija
@Esailija Jeśli nie jest intencją funkcji jawnej pracy z nieokreśloną wartością, powinno to być w porządku imo. Nie jest to funkcja odpowiedzialna za wychwycenie każdego możliwego błędu. – Christoph
@Christoph Jeśli naprawdę potrzebujesz wiedzieć, czy argument został przekazany, to nie jest dobrze. Jeśli chcesz tylko wiedzieć, czy argument jest pusty, czy cokolwiek innego, to '! = Null''! == undefined' i tak dalej są tak delikatne i dobre, że nie ma w tym żadnej kuloodporności. Wolisz '! = Null', aby sprawdzić' undefined' i 'null' w tym samym czasie. – Esailija