Comment définir une nouvelle fonction en javascript
J'ai un problème en essayant de faire une fonction globale lorsqu'il est impliqué dans la fermeture. Dans le code ci-dessous j'ai une méthode anonyme qui définit à la nouvelle fonction sur le window
appelé, getNameField
.
(function () {
function alertError (msg) {
alert(msg);
}
window.getNameField = function (fieldId) {
try{
if(!fieldId) {
fieldId='name';
}
return document.getElementById(fieldId);
} catch(e) {
alertError(e);
}
};
}());
alert(getNameField().value);
Cela fonctionne très bien dans le navigateur, mais lorsque j'exécute le code dans JSLint.com avec "Refuser des variables non définies" est activée, il me donne une erreur.
Problème à la ligne 17, le caractère 7:
'getNameField
"n'est pas défini.
Pouvez-vous m'aider à résoudre ce problème de manière que JSLint fait comprend que cette fonction doit être considéré comme global?
"Cela fonctionne très bien dans le navigateur" quel est Donc le problème?
Je voulais juste vous assurer que j'ai écrit le code pour le javascript spec et non pas en utilisant une sorte de "hack".
Je voulais juste vous assurer que j'ai écrit le code pour le javascript spec et non pas en utilisant une sorte de "hack".
OriginalL'auteur Eric | 2010-10-12
Vous devez vous connecter pour publier un commentaire.
Vous pouvez l'appeler comme
window.getNameField
:Ou vous pouvez définir une variable en dehors de la fermeture:
En effet, vous pourriez. Il n'y a pas de problème sérieux avec votre code tel qu'il est.
OriginalL'auteur Tim Down
Je voudrais essayer
OriginalL'auteur jhurshman
JSLint prend l'annotation des commentaires à cet effet. Lire ici sur l'utilisation d'un
/*global */
commentaire.oui, le fichier est plus petit si vous supprimez tous les commentaires. il est également de plus petits si vous l'exécutez à travers un javascript minimizer, qui ne que et réduit les temps de 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 "minimisé" version. soit prendre la faible différence de taille de la source des commentaires, ou faire un minifiés copie lorsque vous "de déployer."
OriginalL'auteur zem