JSLint: à l'Aide d'une fonction avant de l'erreur définie par l'
Je suis l'aide de JSLint de vérifier la plupart de mes fichiers Javascript externes, mais la plus grande quantité d'erreurs que j'obtiens est à partir de fonctions utilisées avant qu'ils ne soient définis.
Est-ce vraiment un problème je dois me préoccuper?
Il semble Firefox, IE7 et Chrome n'avez pas de soins. Des fonctions comme le populaire init()
(que j'utilise souvent) normalement bâton en haut qui fait du sens pour moi (je tiens à faire semblant c'est analogue à main()
), selon JSLint, besoin d'être poussé vers le bas du fichier.
Vous devez vous connecter pour publier un commentaire.
Si vous déclarez des fonctions à l'aide de la
function
mot-clé, vous pouvez les utiliser avant qu'ils ne soient déclarés. Toutefois, si vous déclarez une fonction par une autre méthode (comme l'utilisation d'une fonction de l'expression ou de laFunction
constructeur de), vous devez déclarer la fonction avant de l'utiliser. Voir cette page sur le Mozilla Developer Network pour plus d'informations.En supposant que vous déclarez toutes vos fonctions avec le
function
mot-clé, je pense qu'il devient une programmation de style de question. Personnellement, je préfère la structure de mes fonctions d'une manière qui me semble logique et rend le code le plus lisible possible. Par exemple, comme vous, j'avais mis uninit
fonction en haut, parce que c'est là que tout commence à partir.Comme c'est le top rated google de frapper et d'autres personnes pourraient ne pas être de la voir, au premier abord, jslint outil, il y a une option appelée "Tolérer misordered définitions de" qui vous permet de masquer ce type d'erreur.
true
ne semble pas "résoudre" ce problème pour moi.Si vous utilisez jshint vous pouvez définir
latedef
ànofunc
, qui ignore fin de la fonction des définitions.Documentation - http://www.jshint.com/docs/options/#latedef
Exemple d'utilisation:
Espère que cette aide.
De jslint du site web (http://www.jslint.com/lint.html), vous pouvez lire à ce sujet un /*global*/directive qui permet de définir des variables qui sont supposés être déclaré ailleurs.
Voici un exemple (mettre le présent en haut de la fiche):
L' :true :false n'est pas réellement nécessaire à partir de mon expérience, mais il semble qu'il est recommandé à partir de ce que j'ai lu sur le site.
Assurez-vous que la première mondiale de déclaration est sur la même ligne que
/*
, sinon il se casse.Pour désactiver cet avertissement dans
jshint
pour tous les fichiers, de le placer dans votre.jshintrc
fichier:Dans votre
.jshintrc
fichier, set:il est très dommage que le latedef option a été supprimée. Cela est essentiel lors de la tentative de créer une "classe" avec une interface en haut, c'est à dire,
Ce style est très commun, mais ne passe pas jsLint, car func est "utilisé" avant d'être défini. Avoir à utiliser global pour chaque "membre" de la fonction est une douleur totale.
Vous pouvez toujours déclarer la délinquance de la fonction en haut
par exemple:
var init;
.... mais alors vous aurez à retirer le "var" quand vous arrivez à la vraie définition plus bas:
init = function() {
};
init = function(){}
n'est pas le même quefunction init() {}
ECMAScript a des règles différentes pour les fonctions anonymes, qu'est ce que la première.