qu'est-ce que le code suivant dans le script de faire java:Que fait var x = x || {};
var x = x || {};
qu'est-ce que le code suivant dans le script de faire java:Que fait var x = x || {};
var x = x || {};
Si x
n'est pas défini (ou nul, ou toute autre valeur false
), il devient un objet vide.
Affectez x
à un nouvel objet vide s'il est null
(undefined, false) ou conservez sa valeur existante sinon null
.
||
est le OR
logique.
L'expression
var x = x OR {};
devrait devenir plus évidente alors.
Si x
a une valeur falsy (comme null
, undefined
, 0
, ""
), nous attribuons x
un objet vide {}
, sinon il suffit de garder la valeur actuelle. La version longue de ce ressemblerait
var x = x ? x : {};
excellente réponse. Je suis un programmeur c et cela n'a pas de sens. – jakoh
Si cela n'avait aucun sens pour vous, alors vous pourriez également faire attention à '!! value' qui renvoie un booléen représentant la véracité de' value', très pratique à certains moments. –
Votre version longue est incorrecte: considérez le cas où x a déjà été défini et est défini sur 'null'. 'var x = x || {}; 'redéfinira x à un objet, alors que' var x = (typeof x! == 'undefined')? x: {}; 'ne le sera pas. Le paragraphe qui le précède est correct cependant. –
à moins que x est défini ou attribuer une valeur qu'il prendra objet vide comme valeur par défaut ..
qui est,
for example
x = 10
var x = x || {};
sortie doit être
10
si la valeur x n'est pas affectée. la valeur de sortie doit être,
undefined
si var x est défini, alors ce sera la valeur définie. Sinon, il sera objet vide comme [object Object]
Par exemple, dans le bloc de code suivant, x sera 10
:
var x = 10;
x = x || {}
Cependant, si:
var x = x || {};
alors x
sera [object Object]
On ne devrait jamais écrire "var x = x || {};" en soi.
La seule circonstance où ceci n'est pas identique à "var x = {};" est quand x a été précédemment initialisé dans la même portée. C'est immoral. Note:
function() {
x = {foo:"bar"};
var x = x || {};
}
est le même que, simplement plus confuse que,
function() {
var x = {foo:"bar"};
x = x || {};
}
En aucun cas, est-il une référence à la valeur du symbole « x » dans la portée globale.
Cette expression est une variante confuse de l'idiome légitime d'initialisation de la propriété paresseuse:
function(foo) {
foo.x = foo.x || {};
foo.x.y = "something";
}
Cette question est la plus ancienne, l'autre est un double. –
Les expressions logiques en JavaScript sont évaluées de gauche à droite et sont testées pour une éventuelle évaluation "court-circuit" en utilisant les règles suivantes: false && (n'importe quoi) est évalué en court-circuit à faux. vrai || (n'importe quoi) court-circuit évalué à vrai. Dans l'exemple ci-dessus, si x est vrai, x devient la valeur assignée. Si x est faux ou indéfini, le second opérande devient l'assignation qui est {}. – tony