Je vérifie si une variable est définie ou non, et si elle ne se définit pas, je suis explicitement va définir en faisant:« variable » a été utilisé avant qu'il ne soit défini
if (typeof(aVariable) == 'undefined') {
var aVariable = value;
}
Parce que la variable est non défini JSLint prévient qu'il est utilisé avant qu'il ne soit défini, et c'est exactement ce que je veux.
Comment puis-je surmonter cela?
Je veux permettre de définir les variables qui font explicitement:
<script>
var aVariable = value;
</script>
<script src="myScript.js"></script>
Donc tout le monde qui va inclure ce script peut personnaliser certaines des propriétés. Et je crains de ne pas pouvoir changer cette logique car elle est déjà utilisée dans des centaines de sites web de cette façon.
Faites défiler vers le bas pour les réponses/solutions, parce que j'ai répondu à ma propre question Stack Overflow ne l'affiche pas. Assurez-vous de ne pas les manquer.
Existe-t-il une pénalité de performance pour la solution 2? Ou des effets secondaires? Je suppose que je ne serais pas capable de changer le foo global? – Vanuan
La solution 2 semble avoir un effet secondaire: la page s'est plantée peu après le chargement sur Safari (sur iOS 6.1.3) lorsqu'un fichier JS avait la ligne 'var window = window || {}; ' Chrome (sur Ubuntu 12.04) n'a pas eu un tel problème. Étrange. –