Je possède ce code JavaScript:Que fait ce code JavaScript?
var JSON;
JSON||(JSON={});
Pouvez-vous dire ce que ce code est en train de faire?
Je possède ce code JavaScript:Que fait ce code JavaScript?
var JSON;
JSON||(JSON={});
Pouvez-vous dire ce que ce code est en train de faire?
Il étend une variable appelée JSON
, puis utilise la nature de court-circuit de l'opérateur ||
pour affecter un objet vide à cette variable, sauf si cette variable a une valeur de vérité.
"vérité" - LOL! – BentOnCoding
@Robotsushi - c'est ce que ça s'appelle. theres aussi falsey. –
@Robotsushi: N'est-ce pas le terme officiel? – Ryan
Il fait juste JSON
un objet vide.
Je pense que cela dit: si la variable 'JSON' est nulle, créez un objet javascript vide.
Non. Il teste si c'est "null" ou "undefined" ou toute autre valeur falsifiée.et si c'est le cas, il affecte un objet JavaScript. Il n'y a pas de JSON (excepté le nom d'une variable mal nommée). – Quentin
var JSON
déclare une variable globale (ou autre portée).
JSON||(JSON={});
est d'abord vérifier si JSON évalue à vrai ou faux, et si faux, alors JSON est mis à un objet vide;
Il est assez inutile dans ce contexte,
var JSON;
crée une variable nommée JSON
La deuxième partie,
JSON||(JSON={});
est équivalent à
if(!JSON){
JSON = {};
}
Tout cela peut être ignoré et écrit
var JSON = {};
Si vous passez le test, alors vous écraserez toujours ce qu'il contient. Ce n'est généralement pas une bonne chose dans tous les cas où quelqu'un a pris la peine de vérifier si la variable a une valeur réelle. – Quentin
@Quentin qui s'applique uniquement s'il y a plus de code avant l'ensemble, ce qui n'est pas le cas. – Andrew
- Je pense que supposer que le code dans la question représente le programme complet est probablement dangereux. – Quentin
Ce code fait ce qui suit:
JSON
(JSON === undefined
){}
) à JSON
si JSON
est une valeur falsey.valeurs Falsey comprennent: null
, undefined
, ""
(chaîne vide), 0
, NaN
, false
.
JSON
a été déclarée par var JSON
, donc est réglé sur undefined
, ce qui signifie que la main droite de l'opération JSON||...
sera exécuté. En d'autres termes, tout le code atteint est:
var JSON = {};
Il étend la variable. Il pourrait avoir une valeur d'ailleurs. – Quentin
@Quentin, Exactement - la valeur doit être 'undefined' car la variable est déclarée via' var JSON'. S'il avait une autre valeur avant cette déclaration, cela n'aura aucune importance puisque 'JSON || ..' est exécuté après cela. – James
- Non, 'var' est hébergé et ne réinitialise pas une variable avec une valeur définie précédemment dans la portée. J'ai vu: 'function (foo) {var foo ...}' un certain nombre de fois. Le 'var' est redondant parce que les arguments sont localement étendus automatiquement. – Quentin
Si c'est l'extrait exactement, alors il est un moyen très rond-point de faire 'var JSON = {}; c', ce qui crée un nouvel objet et assigne à la variable 'JSON'. – Ryan