web-dev-qa-db-fra.com

Comment vérifier si une variable n'est pas nulle?

Je sais que, ci-dessous, les deux méthodes en JavaScript permettent de vérifier si une variable n’est pas null, mais je ne comprends pas quelle est la meilleure pratique à utiliser.

Devrais-je:

if (myVar) {...}

ou

if (myVar !== null) {...}
234
nickb

Ils ne sont pas équivalents. Le premier exécutera le bloc suivant l'instruction if si myVar est truthy (c'est-à-dire évalué à true dans une condition), tandis que le second exécutera le bloc si myVar est une valeur autre que null.

Les seules valeurs qui ne sont pas véridiques en JavaScript sont les suivantes (a.k.a. falsy values):

  • null
  • undefined
  • 0
  • "" (la chaîne vide)
  • false
  • NaN
341
Tim Down

Voici comment vous pouvez tester si une variable n'est pas NULL:

if (myVar !== null) {...}

le bloc sera exécuté si myVar n'est pas null .. il sera exécuté si myVar est indéfini ou faux ou 0 ou NaN ou quoi que ce soit d'autre ..

57
Tolgahan Albayrak

Lisez ces articles à: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/

Il contient quelques astuces intéressantes pour JavaScript en général, mais une chose qu'il mentionne est que vous devriez vérifier la valeur null comme:

if(myvar) { }

Il mentionne également ce qui est considéré comme "falsey" que vous pourriez ne pas réaliser.

42
Jonathon Bolster

Il y a un autre scénario possible que je viens de rencontrer.

J'ai fait un appel ajax et les données ont été renvoyées comme nulles, au format chaîne. Je devais vérifier comme ça:

if(value != 'null'){}

Donc, null était une chaîne qui disait "null" plutôt que d'être vraiment nulle.

EDIT: Il devrait être entendu que je ne vends pas cela comme la façon dont il devrait être fait. J'ai eu un scénario où c'était la seule façon possible de le faire. Je ne sais pas pourquoi ... peut-être que le type qui a écrit le back-end présentait les données de manière incorrecte, mais peu importe, c'est la vraie vie. C’est frustrant de voir ce vote à la baisse de la part de quelqu'un qui comprend que ce n’est pas tout à fait correct, puis à la défaveur de quelqu'un que cela aide réellement. 

7
Flat Cat

Ici vous avez tous ( src ):

si

 enter image description here 

== (sa négation! = )

 enter image description here 

=== (sa négation! == )

 enter image description here 

Alors

  • le code dans votre if(myVar) { code } ne sera PAS exécuté que lorsque myVar sera égal à: false, 0, "", null, undefined, NaN ou si vous n'avez jamais défini la variable myVar (puis, en plus, le code arrête l'exécution et lève une exception).
  • le code à l'intérieur de votre if(myVar !== null) {code} ne sera PAS exécuté que lorsque myVar sera égal à null ou que vous ne l'ayez jamais défini (exception).
3
Kamil Kiełczewski

Parfois, si cela n’était même pas défini, il vaut mieux être préparé ..__ Pour cela j’ai utilisé typeof

if(typeof(variable) !== "undefined") {
    //it exist
    if(variable !== null) {
        //and is not null
    }
    else {
        //but is null
    }
}
else {
    //it doesn't
}
0
OpenUser