2014-07-05 3 views
0

Je souhaite vérifier si mes données json sont null/undefined. J'ai le code suivant mais il semble sauter la vérification et aller directement au else.IF null ELSE - Corriger la syntaxe de If Else

if (events === null) { 
    container.append(nano(nogig)); 
} else { 
    events[0].start.good_date = good_date(events[0].start.date); 
    container.append(nano(template, events[0])); 
} 

ligne 385 sur cette jsFiddle

http://jsfiddle.net/5WQxq/

+0

Pourquoi utilisez-vous === plutôt que ==? – Kritner

+3

@Kritner: Voir [this] (http://stackoverflow.com/questions/359494/does-it-matter-which-equals-operator-vs-i-use-in-javascript-comparisons) pour comprendre pourquoi. – djikay

+0

droit, mais comment le type d'un "null" peut-il jamais être équivalent à (events) null sans qu'une sorte de conversion soit faite sur les événements? Avec l'opérateur === vos objets sont comparés comme c'est oui? Comme le dit le booléen, cela devrait vous obtenir les résultats attendus. Lisez aussi: http://stackoverflow.com/questions/5113374/javascript-check-if-variable-exists-is-defined-initialized-which-method-is-b Je pense que cela touche à peu près le même problème que vous ' a frappé – Kritner

Répondre

3
if (!events) { 
      container.append(nano(nogig)); 
     } else { 
      events[0].start.good_date = good_date(events[0].start.date); 
      container.append(nano(template, events[0])); 
     } 

Ce contrôle pour nulle et non définie.

+1

Et pour '0',' false', 'NaN' et' '' '. –

+0

@FelixKling bien oui, mais il a seulement besoin de null et indéfini .. – Typo

+0

Si vous voulez seulement correspondre 'null' et' undefined', la condition devrait être quelque chose comme 'events === null || events === undefined' –

1

Si vous utilisez l'opérateur == plutôt que l'opérateur ===, les tests effectués sur null correspondent également au undefined. C'est undefined == null retournera true, tandis que undefined === null renverra false. Donc, essayez ceci:

if (events == null) { 

Démo: http://jsfiddle.net/5WQxq/1/

Vous pouvez également tester explicitement les deux valeurs:

if (events === null || events === undefined) { 

Ou vous pouvez simplement tester une valeur falsy:

if (!events) { 

(... qui correspondrait également sur false, 0, chaîne vide, et NaN, mais ces valeurs ne sont pas susceptibles de s'appliquer et dans tous les cas si elles se produisent, vous souhaitez toujours que le cas if corresponde.)