Existe-t-il un ensemble de choses que chaque programmeur JavaScript devrait savoir pour pouvoir dire « Je sais JavaScript » ?
Réponses
Trop de publicités?Pas jQuery. Pas de YUI. Pas (etc. etc.)
Les cadres peuvent être utiles, mais ils sont souvent cachant parfois laid détails de la façon dont le JavaScript et le DOM fonctionnent réellement de vous. Si votre objectif est d'être capable de dire "je sais que JavaScript", puis, à investir beaucoup de temps dans un cadre qui est opposée à celle.
Voici un peu de JavaScript (langage de fonctionnalités que vous devez savoir analyser ce qu'il fait et de ne pas se faire attraper, mais qui ne sont pas immédiatement évident pour beaucoup de gens:
Qu'
object.prop
etobject['prop']
sont la même chose (alors pouvez-vous s'il vous plaît arrêter d'utilisereval
, merci); que les propriétés de l'objet sont toujours des chaînes de caractères (même pour les tableaux); cefor
...in
est pour (et ce qu'il n'est pas).Propriété renifleurs; ce
undefined
(et pourquoi ça sent); pourquoi l'apparemment peu connu,in
opérateur est bénéfique et différent detypeof
/undefined
contrôleshasOwnProperty
;delete
.Que l'
Number
type de données est vraiment un float; l'indépendant de la langue des difficultés de l'utilisation de la flotte, le fait d'éviter l'parseInt
octal piège.Fonction imbriquée de délimitation de l'étendue; la nécessité de l'aide d'
var
dans le champ que vous voulez pour éviter les blessures accidentelles globals; comment les étendues peuvent être utilisés pour la fermeture de la fermeture à boucle de problème.Comment les variables globales et
window
propriétés entrent en collision; comment les variables globales et les éléments d'un document ne devrait pas entrer en collision, mais le faire dans IE; la nécessité de l'aide d'var
dans la portée globale de trop pour éviter cela.Comment l'
function
déclaration des actes de"hisser"une définition d'avant le code précédent; la différence entre les instructions de fonction et les expressions de fonction; pourquoi nommé les expressions de fonction ne doit pas être utilisé.Comment les fonctions constructeur, l'
prototype
de la propriété et de l'new
opérateur de vraiment travail; les méthodes de l'exploitation de cette de créer la normale de la classe/sous-classe/instance de système que vous en fait voulu; lorsque vous souhaitez utiliser la fermeture à base d'objets au lieu de prototypage. (La plupart des JS tutoriel matériel est absolument terrible sur cette question; il m'a fallu des années pour obtenir directement dans ma tête.)Comment
this
est déterminé au temps d'appel, qui n'est pas lié; comment, par conséquent, la méthode de passage ne fonctionne pas comme vous vous attendez à d'autres langues; la façon dont la fermeture ou à laFunction#bind
peuvent être utilisés pour contourner cela.D'autres ECMAScript Cinquième Édition de fonctionnalités comme l'
indexOf
,forEach
et la fonctionnelle de la programmation des méthodes surArray
; comment résoudre les navigateurs plus anciens, de sorte que vous pouvez les utiliser, les utiliser avec inline anonyme en fonction des expressions pour obtenir compact, un code lisible.Le flux de contrôle entre le navigateur et le code de l'utilisateur; synchrone et asynchrone; les événements qui feu à l'intérieur du flux de contrôle (par exemple. l'accent) par rapport à des événements et des délais d'attente qui se produisent lorsque le contrôle retourne; comment appeler un soi-disant-synchrone builtin comme
alert
peut finir par causer potentiellement désastreux re-entrancy.Comment la croix-fenêtre de script affecte
instanceof
; comment la croix-fenêtre de script affecte le flux de contrôle à travers les différents documents; commentpostMessage
sera, nous l'espérons résoudre ce problème.
Voir cette réponse concernant les deux derniers points.
La plupart de tous, vous devez afficher le JavaScript de manière critique, en reconnaissant que c'est pour des raisons historiques imparfaite de la langue (même plus que la plupart des langues), et d'en éviter les pires agissant des points névralgiques. Crockford sur ce front est certainement la peine de lire (même si je ne suis pas 100% d'accord avec lui sur ce qui les "Bonnes Parties").
La compréhension des choses écrites dans Crockford du Javascript: Les Bonnes Parties est une très bonne hypothèse qu'une personne est un décent JS programmeur.
Vous pouvez très bien savoir comment utiliser une bonne librairie comme JQuery et sait toujours pas les parties cachées de Javascript.
Une autre remarque est que des outils de Débogage sur les différents navigateurs. Un JS programmeur doit savoir comment déboguer son code dans différents navigateurs.
Oh! Et sachant JSLint totalement blesser vos sentiments!!
Si vous voulez être un vrai ninja de JavaScript, vous devez savoir les réponses à chaque question dans la Perfection tue Quiz de JavaScript.
Un exemple pour vous mettre en appétit :
Ce qui est retourne cette expression ?
- « Numéro »
- « indéfini »
- « fonction »
- Erreur