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) {...}
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
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 ..
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.
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.
Ici vous avez tous ( src ):
si
== (sa négation! = )
=== (sa négation! == )
Alors
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).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).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
}