J'ai un problème qui tente de faire une fonction globale lorsqu'il est impliqué dans la fermeture. Dans le code énuméidé ci-dessous, j'ai une méthode anonyme qui définit à la nouvelle fonction de la fenêtre code> appelée, Ceci fonctionne bien Dans le navigateur, mais quand j'exécute le code dans jslint.com avec "interdire les variables non définies" activées, cela me donne une erreur . P> problème à la ligne 17 caractère 7:
' Pouvez-vous m'aider à résoudre ce problème pour que Jslint comprenne réellement que cette fonction devrait être considérée comme globale? p> p> getnamefield code>.
getNamefield code>' n'est pas défini. p>
blockQuote>
3 Réponses :
J'essaierais
window["getNameField"] = function(fieldId) {
Cela fera précisément aucune différence.
Jslint prend des commentaires annotant à cette fin. Lire ici sur l'utilisation d'un / * global * / code> Commentaire. p>
Généralement, dans le code JS, je souhaite éviter d'utiliser des commentaires en raison des caractères supplémentaires téléchargés sur le navigateur. Je pourrais continuellement ajouter et supprimer les commentaires mais je n'aime pas non plus cette étape manuelle.
Oui, le fichier est plus petit si vous supprimez tous les commentaires. Il est également plus petit si vous l'exécutez via un minimum JavaScript, qui le fait et raccourcit tous les noms de variables et supprime tous les espaces inutiles. Dans les deux cas, vous ne voulez pas développer à l'aide de la version «Minifiée». Soit la différence de taille insignifiante des commentaires de la source ou effectuez une copie minifiée lorsque vous "déployez".
Vous pouvez plutôt l'appeler comme ou vous pouvez définir une variable en dehors de la fermeture: p> window.getnamefield code>:
Sur les mêmes lignes, je pourrais créer une variable qui agit comme un "espace de noms", où la variable est une matrice associative et la fonction est attribuée à l'une des entrées de la matrice associative. L'inconvénient, bien que mineur, est que je devrais redéfinir tout mon code pour utiliser la variable "Espace de noms" si je voulais rester cohérent.
En effet, vous pourriez. Il n'y a pas de problème grave avec votre code tel qu'il se trouve.
"Cela fonctionne bien dans le navigateur" alors quel est le problème?
Je voulais juste m'assurer que j'écris le code par la spécification JavaScript et n'utilise pas une sorte de "hack".