Opérateur logique OU (||) et opérandes non booléens
En JavaScript, l'opérateur logique OU (||) est couramment utilisé pour évaluer des expressions booléennes. Cependant, il peut également être appliqué à des opérandes non booléens, conduisant à des résultats inattendus.
Considérez le code suivant :
<code class="javascript">var $time = Date.now || function() { return +new Date; };</code>
Dans cet exemple, le || L’opérateur est utilisé pour attribuer une fonction à la variable $time. L'expression évalue le résultat de Date.now s'il existe (c'est-à-dire qu'il n'est pas nul ou indéfini), sinon il exécute la fonction anonyme, qui renvoie l'horodatage actuel.
La raison de ce comportement réside dans le rôle secondaire du || opérateur comme opérateur « par défaut ». Lorsque les deux opérandes ne sont pas booléens, il renvoie l'opérande de gauche s'il est vrai (non nul, non défini, la chaîne vide ou 0), et l'opérande de droite si l'opérande de gauche est faux.
Dans le code donné, Date.now est une valeur véridique, donc l'opérande de gauche est renvoyé, qui est la fonction Date.now d'origine. Cependant, si Date.now n'était pas disponible (par exemple, dans les anciens navigateurs), l'opérande de droite, qui est la fonction anonyme, aurait été exécuté à la place.
Cette utilisation du || L'opérateur permet aux développeurs de spécifier des valeurs par défaut ou des comportements de secours de manière concise. Par exemple, le code suivant attribue une valeur à la variable v, mais si v n'est pas défini, il définit la valeur sur 10 :
<code class="javascript">value = v || 10;</code>
De même, le code suivant protège contre l'accès à une propriété d'un nullable objet :
<code class="javascript">var value = p && p.name;</code>
En conclusion, le || L'opérateur (OU logique) en JavaScript peut également être utilisé avec des opérandes non booléens, où il évalue l'opérande de gauche s'il est véridique, ou l'opérande de droite dans le cas contraire. Ce comportement peut être utile pour spécifier des valeurs par défaut et écrire du code null-safe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!