Jak powinienem przetestować, czy zmienna jest zdefiniowana?Sprawdź, czy zmienna jest zdefiniowana w javascript?
if //variable is defined
//do this
else
//do this
Jak powinienem przetestować, czy zmienna jest zdefiniowana?Sprawdź, czy zmienna jest zdefiniowana w javascript?
if //variable is defined
//do this
else
//do this
if (typeof variable !== 'undefined') {
// ..
}
else
{
// ..
}
znaleźć więcej wyjaśnień tutaj:
można użyć coś jak ten
if (typeof varname != 'undefined')
{
//do this
}
else
{
//do this
}
Wystarczy sprawdzić typ.
if(typeof yourVar !== "undefined"){
alert("defined");
}
else{
alert("undefined");
}
Użyj operatora in
.
'myVar' in window; // for global variables only
typeof
sprawdza zwróci true dla zmiennej jeżeli,
undefined
lubPoniższe przykłady ilustrują drugi i trzeci punkt.
// defined, but not initialized
var myVar;
typeof myVar; // undefined
// defined, and initialized to undefined
var myVar = undefined;
typeof myVar; // undefined
Możesz użyć * w oknie * tylko w specjalnym przypadku zmiennych globalnych, ponieważ są one również właściwościami obiektu globalnego. Zmienne lokalne nie mają takiego dostępnego obiektu zmiennego. Założenie, że istnieje obiekt okna, może być uzasadnione dla przeglądarek, ale ogólnie nie jest konieczne. – RobG
@RobG - nie musi to być 'window' ani obiekt globalny. Zamiast tego można użyć dowolnego obiektu. Podałeś dobry punkt o zmiennych zdefiniowanych lokalnie, które nie są dostępne tutaj. Będę zainteresowany dowiedzieć się, czy istnieje sposób na określenie niezdefiniowania zmiennych lokalnych w oparciu tylko o pierwsze kryteria, które mam. – Anurag
Jeśli chodzi o zmienne i zakres, wtedy można rozróżniać tylko zmienne globalne (ponieważ są to właściwości obiektu globalnego) i reszta. W funkcji zagnieżdżonej nie można stwierdzić, czy identyfikator jest lokalną czy zewnętrzną zmienną funkcji, ponieważ nie można uzyskać dostępu do powiązanych obiektów zmiennych. Rozdzielczość właściwości obiektu to zupełnie inna sprawa. – RobG
Użyj! == dla dokładnego porównania i lepszej wydajności. –
@ AmericanYak-in a * typeof * przetestuj algorytm rozwiązywania ['=='] (http://ecma-international.org/ecma-262/5.1/#sec-11.9.3) i ['=== '] (http://ecma-international.org/ecma-262/5.1/#sec-11.9.6) jest identyczne, ponieważ obie wartości mają ten sam typ (ciąg), więc skąd się bierze większa wydajność? – RobG
To nie powiedzie się, gdy 'typeof null' to' Obiekt' – nikjohn