Pytanie Jak ustalić, czy zmienna ma wartość "undefined" lub "null"?
Jak określić, czy zmienna jest undefined
lub null
? Mój kod jest następujący:
var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
//DO SOMETHING
};
<div id="esd-names">
<div id="name"></div>
</div>
Ale jeśli to zrobię, interpreter JavaScript zatrzymuje wykonywanie.
1610
2018-04-15 18:12
pochodzenie
Odpowiedzi:
Możesz korzystać z zalet operator abstrakcyjnego równości Aby to zrobić:
if (variable == null){
// your code here.
}
Bo null == undefined
jest prawdą, powyższy kod złapie oba null
i undefined
.
2201
2018-04-15 18:14
Standardowy sposób na złapanie null
i undefined
jednocześnie jest to:
if (variable == null) {
// do something
}
- co jest w 100% równoważne z bardziej wyraźnym, ale mniej zwięzłym:
if (variable === undefined || variable === null) {
// do something
}
Pisząc profesjonalny JS, przyjmuje się za pewnik, że [typ równości i zachowanie ==
vs ===
] [1] jest zrozumiany. Dlatego używamy ==
i tylko porównać do null
.
Edytuj ponownie
Komentarze sugerujące użycie typeof
są po prostu źle. Tak, moje rozwiązanie powyżej spowoduje błąd ReferenceError, jeśli zmienna nie istnieje. To coś dobrego. Ten błąd ReferenceError jest pożądany: pomoże Ci znaleźć błędy i naprawić je przed wysłaniem kodu, podobnie jak błędy kompilatora w innych językach.
Nie powinieneś mieć żadnych odniesień do niezadeklarowanych zmiennych w twoim kodzie.
911
2018-01-22 03:01
if (variable == null) {
// Do stuff, will only match null or undefined, this won't match false
}
177
2018-04-15 18:25
Łącząc powyższe odpowiedzi, wydaje się, że najbardziej kompletna odpowiedź brzmi:
if( typeof variable === 'undefined' || variable === null ){
// Do stuff
}
Powinno to działać dla każdej zmiennej, która jest niezadeklarowana lub zadeklarowana i jawnie ustawiona na wartość null lub undefined. Wyrażenie boolowskie powinno mieć wartość false dla dowolnej zadeklarowanej zmiennej, która ma rzeczywistą wartość inną niż null.
162
2017-10-11 17:02
if (typeof EmpName != 'undefined' && EmpName) {
będzie wartość true, jeśli wartość nie jest:
zero
niezdefiniowany
NaN
pusta struna ("")
0
fałszywy
75
2018-05-07 07:24
jQuery attr()
Funkcja zwraca pusty ciąg lub rzeczywistą wartość (i nigdy nie null
lub undefined
). Tylko czas wraca undefined
jest, gdy twój selektor nie zwrócił żadnego elementu.
Więc możesz chcieć przetestować przeciwko pustemu napisowi. Alternatywnie, ponieważ puste ciągi, null i undefined to false-y, możesz po prostu zrobić to:
if (!EmpName) { //do something }
20
2018-04-15 18:20
Podoba mi się to:
if (!!variable) {
//do something
}
Łapie oba zero i niezdefiniowany
13
2017-09-16 08:35
Jeśli zmienna, którą chcesz sprawdzić, jest globalna, zrób
if (window.yourVarName) {
// Your code here
}
Ten sposób sprawdzenia nie spowoduje błędu, nawet jeśli yourVarName
zmienna nie istnieje.
Przykład: chcę się dowiedzieć, czy moja przeglądarka obsługuje interfejs History API
if (window.history) {
history.back();
}
Jak to działa:
window
to obiekt, który przechowuje wszystkie zmienne globalne jako swoje właściwości, a w JavaScript jest legalna próba uzyskania dostępu do nieistniejącej właściwości obiektu. Gdyby history
nie istnieje wtedy window.history
zwraca undefined
. undefined
jest falsey, więc kod w if(undefined){}
blok nie działa.
9
2018-02-10 16:30
Przyszedłem napisać własną funkcję do tego ... javascript jest dziwny
Można go używać dosłownie. (Należy zauważyć, że sprawdza to również, czy zmienna zawiera jakąkolwiek możliwą do wykorzystania wartości. Ale ponieważ ta informacja jest zwykle potrzebna, myślę, że warto ją opublikować). Proszę rozważyć pozostawienie notatki.
function empty(v) {
let type = typeof v;
if(type === 'undefined') {
return true;
}
if(type=== 'boolean') {
return !v;
}
if(v === null) {
return true;
}
if(v === undefined) {
return true;
}
if(v instanceof Array) {
if(v.length < 1) {
return true;
}
}
else if(type === 'string') {
if(v.length < 1) {
return true;
}
if(v==='0') {
return true;
}
}
else if(type === 'object') {
if(Object.keys(v).length < 1) {
return true;
}
}
else if(type === 'number') {
if(v===0) {
return true;
}
}
return false;
}
Zgodny z czcionką.
edytować. ta funkcja powinna wystarczyć dokładnie to samo, co PHP empty()
funkcjonować (widzieć RETURN VALUES
)
Uważa undefined
, null
, false
, 0
, 0.0
, "0"
{}
, []
jako pusty.
"0.0"
, NaN
, " "
, true
są uważane za niepuste.
7
2017-10-24 15:14