Expliquer cela un peu plus...
L' ||
de l'opérateur est la logique-or
de l'opérateur. Le résultat est true si la première partie est vraie et c'est vrai si la deuxième partie est vrai et c'est vrai si les deux parties sont vraies. Pour plus de clarté, le voici dans un tableau:
X | Y | X || Y
---+---+--------
F | F | F
---+---+--------
F | T | T
---+---+--------
T | F | T
---+---+--------
T | T | T
---+---+--------
Maintenant, remarquez quelque chose ici? Si X
est vrai, le résultat est toujours vrai. Donc, si nous savons qu' X
est vrai nous n'avons pas à vérifier l' Y
. De nombreuses langues ainsi de mettre en œuvre le "court-circuit" évaluateurs pour logiques-or
(et logique-and
venant de l'autre sens). Ils vérifient le premier élément et si c'est vrai, ils n'ont pas pris la peine de vérifier la deuxième. Le résultat (en termes logiques) est le même, mais en termes d'exécution il y a potentiellement une énorme différence si le deuxième élément est coûteux à calculer.
Alors qu'est-ce que avez à faire avec votre exemple?
var title = title || 'Error';
Regardons-les. L' title
élément est passé dans votre fonction. En JavaScript si vous n'avez pas à passer un paramètre, la valeur par défaut à une valeur null. Aussi en JavaScript si votre variable est une valeur null, il est considéré comme faux par les opérateurs logiques. Donc, si cette fonction est appelée avec un titre donné, c'est une non-valeur false et donc assigné à la variable locale. Si, toutefois, il n'est pas une valeur, c'est une valeur null et donc faux. La logique-or
opérateur évalue ensuite la deuxième expression et renvoie "Erreur" à la place. Alors maintenant, la variable locale est donnée de la valeur "Erreur".
Cela fonctionne en raison de la mise en œuvre des expressions logiques en JavaScript. Il ne renvoie pas une bonne valeur booléenne (true
ou false
), mais au lieu de cela renvoie à la valeur qu'il a été donné en vertu de certaines règles quant à ce qui est considéré comme équivalent à true
et ce qui est considéré comme équivalent à false
. Trouvez votre JavaScript de référence pour apprendre le JavaScript qui considère être vrai ou faux dans boolean contextes.