2011-09-28 12 views

Odpowiedz

72
if (typeof variable !== 'undefined') { 
    // .. 
} 
else 
{ 
    // .. 
} 

znaleźć więcej wyjaśnień tutaj:

JavaScript isset() equivalent

+3

Użyj! == dla dokładnego porównania i lepszej wydajności. –

+1

@ 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

+0

To nie powiedzie się, gdy 'typeof null' to' Obiekt' – nikjohn

0

można użyć coś jak ten

if (typeof varname != 'undefined') 
    { 
     //do this 
    }  
    else 
    { 
     //do this 

    } 
3

Wystarczy sprawdzić typ.

if(typeof yourVar !== "undefined"){ 
    alert("defined"); 
} 
else{ 
    alert("undefined"); 
} 
6

Użyj operatora in.

'myVar' in window; // for global variables only 

typeof sprawdza zwróci true dla zmiennej jeżeli,

  1. to nie zostało zdefiniowane
  2. został zdefiniowany i ma wartość undefined lub
  3. została zdefiniowana ale jeszcze się nie zainicjował.

Poniż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 
+0

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

+1

@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

+0

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

Powiązane problemy