368 votes

Que devrait savoir chaque programmeur JavaScript ?

Existe-t-il un ensemble de choses que chaque programmeur JavaScript devrait savoir pour pouvoir dire « Je sais JavaScript » ?

590voto

bobince Points 270740

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 et object['prop'] sont la même chose (alors pouvez-vous s'il vous plaît arrêter d'utiliser eval, merci); que les propriétés de l'objet sont toujours des chaînes de caractères (même pour les tableaux); ce for...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 de typeof/undefined contrôles hasOwnProperty; 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 à la Function#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 sur Array; 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; comment postMessage 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").

248voto

graphicdivine Points 6414

Qu’elle peut être désactivée.

75voto

bron Points 497

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!!

49voto

Skilldrick Points 33002

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

46voto

edwin Points 1497

Vous ne savez pas JavaScript si vous ne connaissez pas :

  1. Dispositifs de fermeture
  2. Basés sur un prototype héritage
  3. Le modèle de module
  4. Le W3C-DOM
  5. Comment les événements fonctionnent

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X