2016-02-05 1 views
0

Quelle est la différence entre cette déclarationDifférence entre deux déclarations qui déclarent un objet

var X = X || {}; 

Et cela. Ils font la même chose? Il y a une différence de performance?

var X = typeof X === "undefined" ? {} : X; 
+0

Ne pensez pas qu'il existe des différences de performance. mais le premier est court. – Tushar

+1

Un diff est que le premier vérifie si 'X' est vrai, si ce n'est pas alors' X' est un objet vide. Alors que le second ne vérifie que «undefined». – Tushar

+0

Vasile, est-ce que l'une des réponses répond à votre question? – Cerbrus

Répondre

2

Ce ne sont pas les mêmes.

Le || renverra l'objet lorsque X est toute possible valeur falsy.
Le typeof vérifiera seulement retourner {} si X est undefined.

Selon this test, la vérification undefined est presque deux fois plus rapide. C'est probablement parce qu'aucun type de casting n'est requis.

+0

Juste commenté :) :) – Tushar

+1

Et maintenant j'ai même ajouté un jsperf :-) – Cerbrus

1

Dans ce cas: var X = X || {} la variable X sera redéfinie si elle a été déclarée mais est falsy. Donc var X = 0; X = X || {}; écraserait le 0 avec un objet.