html: strong> myjs.js: strong> p> pour une raison quelconque, aucune idée de la raison pour laquelle cela se produit? J'essaie d'activer la page d'hébergement de définir une substitution pour une variable utilisée dans un fichier JS inclus, utilisez sinon, utilisez le Val par défaut. P> p> x code> se termine comme "par défaut val" code> et non "remplacement" code>, même que je le régle au départ "Nuéridène" code> Avant même d'inclure la référence de script à myjs.js. P>
10 Réponses :
Vous utilisez le mot-clé https: // développeur. mozilla.org/fr/javascript/javaScript/reference/statifs/var p> de la liaison ci-dessus: p> La portée d'une variable déclarée avec Var est la fonction enfermante
ou, pour les variables déclarées en dehors d'une fonction, la portée globale (qui
est lié à l'objet global). P>
blockQuote> p> var code> dans les deux endroits. Essayez:
Parce que vous déclarez à nouveau un nouveau var x code> Intérieur
Le Si vous utilisez simplement var x code> dans la fonction passée à $ (document) .Readady () code> cachet la portée globale x code> variable. p>
x = x || "Val par défaut"; code>, puis la variable globale est classée. Cependant, c'est vraiment une mauvaise idée d'avoir des variables globales du tout. P>
Essayez x code> n'est pas défini dans la portée du document code> Fonction code>. p>
var x code> prépare la variable avec la valeur non définie code>, de sorte qu'il ne l'obtiendra pas de la lunette de la fenêtre. P>
var x = x || fenêtre.x || "Val par défaut"; code> à la place. p>
X donnera une erreur de référence si je ne le définis pas cette première fois, FYI.
Puisque vous l'avez indiqué avec un VaL qui n'obtient pas l'objet défini dans le monde entier du HTML. Essayez de supprimer le VaR et de voir si vous obtenez un résultat différent ou modifiez la variable dans la fonction à une lettre différente. P>
Lorsque vous utilisez Var dans une fonction, la portée de ce Var n'est qu'à la fonction. Étant donné que vous avez défini la variable X deux fois lorsque vous effectuez la comparaison, il tente d'utiliser la variable de la fonction. p>
Si vous envisagez de conserver l'instruction VAR, vous devez modifier le nom de la variable ou la manière dont vous appelez le global x code> à window.x code>. L'autre option est simplement de supprimer le Var de la fonction. p>
Vous déclarez appelez-le var x code> dans votre fonction qui crée un stockage local pour x code> et masque les valeurs précédentes. p>
var y code> ou faire comme karim79 suggéré. p>
Je veux vraiment accepter celui-ci, mais si je fais var y = x || "Par défaut" code>, puis JS jette une erreur disant que X est indéfini.
Le ... est local à la fonction qu'il est défini dans (c'est-à-dire qu'il ombres Le global Suppression du précédent Cela peut conduire à la confusion, comme il se peut que la variable ne soit pas claire.
Les utilisations ultérieures du nom de la variable ombragée se rapportent. P>
blockQuote> p> x code> créé sur cette ligne: x code>). P> Var code> entraînera les noms x code> pour référencer la même variable globale, mais c'est généralement une mauvaise idée. De la page Wikipedia précédemment liée: P>
Votre var x code> dans la seconde est local sur cette fonction et n'est pas identique à celle window.x code> (qui est ce que vous avez défini dans le ancien bloc). P>
Le mot clé var signifie que vous venez de créer une variable locale. Donc, essentiellement ce qui se passe est que:
Mémoire: P>
f=function(){
var x;
var y;
x=y || "default value";
y=3;
alert(x);
}
Ce que vous avez après l'application de la déclaration variable est appliqué: Il regarde le plus proche
Vous seriez bien s'ils étaient dans la même portée, car les déclarations sont toujours hissées au-dessus des affectations ci-dessus afin: p> est en réalité juste p> Ceci a été suggéré, qui est complètement inutile: p> Il lancera un
Donc, faire le chèque dans la même portée ou faire quelque chose comme: p> x code> et voit sa valeur est non défini code> qui est une valeur de fausset, donc x code> est défini sur "par défaut" code>.
p>
RéférenceError code> si x code> n'est pas défini.
p>
$(document).ready(function(){
var x = window.x || "default";
});
Marquant ceci comme réponse car plusieurs autres réponses suggérées var y = x || "Par défaut" code> que vous avez mentionné "Il lancera une référenceError si x n'est pas défini."
Peut-être supprimer
var code> mot-clé de la première déclaration?