2009-09-23 3 views
2

Nous utilisons une API externe qui retourne '' ou boolean false alors que Javascript semble trouver les deux égaux. par exemple:'' est faux en Javascript? Quel serait le moyen le plus sûr de distinguer entre '' et booléen faux?

var x = ''; 
if (!x) { 
    alert(x); // the alert box is shown - empty 

} 
if (x=='') { 
    alert(x); // the alert box is shown here too - empty 

} 
var z = false; 
if (!z) { 
    alert(z); // the alert box is shown - displays 'false' 

} 
if (z=='') { 
    alert(z); // the alert box is shown here too - displays 'false' 

} 

Comment peut-on distinguer entre les deux?

Répondre

27

Utilisez le triple égalité

if (x===false) //false as expected 
if (z==='') //false as expected 

Un double égal fera clichage, tout en triple égalité ne sera pas. Alors:

0 == "0" //true 
0 === "0" //false, since the first is an int, and the second is a string 
0

comme mentionné par peirix: tripple signe égal vérifier la valeur et le type

1 == '1' // true 
1 === '1' // false 
+3

Comme vous l'avez mentionné, cela a déjà été mentionné. Pourquoi le mentionner à nouveau? –

+0

parce qu'au moment où j'ai posté cela, il a omis de mentionner qu'il vérifie la valeur et le type ... – NDM

2
var typeX = typeof(x); 
var typeZ = typeof(z); 

if (typeX == 'string' && x == '') 
else if (typeX == 'boolean' && !typeX) 

J'aime la réponse de Peirix aussi, mais voici une alternative.

0

Pour éviter cette question, utilisez le validateur jslint. Il aide à trouver des opérations dangereuses.

Questions connexes