Die überprüfung für die übergebenen Parameter mit null - JavaScript
Nehmen Sie ein Beispiel der Funktion hier:
function a(b){
console.log(b != null ? 1 : 2);
}
Dass code, der funktioniert gut, durch drucken 1 übergeben Sie einen parameter, und 2, wenn Sie nicht.
Jedoch, JSLint gibt mir eine Warnung, erzählte mir, um stattdessen die strikte Gleichheit, ich.e !==
. Unabhängig davon, ob ein parameter übergeben wird oder nicht, wird die Funktion drucken 1 wenn Sie !==
.
Also meine Frage ist, was ist der beste Weg, um zu überprüfen, ob ein parameter übergeben wurde? Ich will nicht zu verwenden arguments.length
oder tatsächlich verwenden Sie die arguments
Objekt überhaupt.
Ich habe versucht mit diesem:
function a(b){
console.log(typeof(b) !== "undefined" ? 1 : 2);
}
^ , das schien zu funktionieren, aber ist es die beste Methode?
- Wenn Sie pass
undefined
Sie erhalten dann eine falsch-negative.arguments.length
(oder Varianten) ist der einzige Weg, um zu sehen, ob das argument übergeben wurde. - Wenn es nicht die Absicht, die Funktion explizit arbeiten mit undefinierten Wert, dies sollte okay sein imo. Es sind nicht die Funktionen die Verantwortung zu fangen jeden userfault möglich.
- Wenn Sie wirklich brauchen, zu wissen, ob ein argument übergeben wurde, dann ist es nicht ok. Wenn Sie wollen einfach nur wissen, wenn das argument leer ist oder was auch immer, dann
!= null
!== undefined
und so weiter sind alle nur so zerbrechlich und gut , es gibt keine kugelsichere in die. Lieber!= null
zu prüfenundefined
undnull
zur gleichen Zeit. - Es spielt keine Rolle, ob ein argument übergeben wird, mit dem Wert
undefined
oder kein argument, wenn die Funktion akzeptiert keine undefinierten Werte.null
jedoch darauf hin, dass es einen parameter übergeben, da es unterscheidet sich vonundefined
das ist der Fall, wenn kein Parameter übergeben wird. Also ich würde nicht überprüfen Sie mit!=null
- Das ist, warum ich sagte, wenn Sie wirklich brauchen, zu wissen 😛 natürlich ist es nicht normal, dass zu wissen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn kein argument übergeben wird, wird
b
istundefined
, nichtnull
. Also, die richtige Methode, die testet, ob das argumentb
ist diese:!==
wird empfohlen, da die null-und undefined werden können, gezwungen zu werden, gleich wenn Sie==
oder!=
, aber mit!==
oder===
nicht tun, geben Sie Zwang, so kann man streng sagen, ob esundefined
oder nicht.typeof
innerhalb der Funktion, weil wir in der Funktion Umfang und dieundefined
können nicht überschrieben werden hier 🙂 Im globalen scope, es ist sicherer, zu verwendentypeof(foo) !== "undefined"
.Können Sie die falsy Natur
undefined
(ein parameter, der nicht bestanden wurde, ist in der Tatundefined
, nichtnull
) und nur schreiben:Dies ist aber auch wahr sein für
0
,null
und""
(falsy-Werte).Wenn Sie wollen, es zu schreiben, der kugelsichere Weg, den Sie gehen können:
Update: Dank EcmaScript 2015, die wir jetzt verwenden können,Standard-Parameter:
Wenn ein parameter nicht definiert ist, entweder weggelassen oder explizit übergeben wird (hier sollten Sie verwenden
null
statt) - der default-Wert verwendet, alle anderen Werte bleiben unverändert (auch falsy sind). Demonstrationb = b || defaultValue
. Es ist eine gemeinsame JS-idiom fürif(!b){b = defaultValue;}
- mit den gleichen Einschränkungen wie oben (!b
ist wahr, wennb
ist entweder0
,false
,null
,undefined
oder""
).0
oder""
als parameter auf diese Weise. Bei der Arbeit mit default-Werten, die Sie sollten überprüfen Sie den sicheren Weg und nicht falsy Natur.b = b || {}
).