En décembre 2009, Ecmascript a publié Ecmascript 5, qui a été publié pour la dernière version de la norme ECMAScript 3 pour la version précédente. La complexité de ce langage (c'est-à-dire s'il faut augmenter un grand nombre de caractéristiques pour étendre la fonction d'ECMAScript) et est décédé, ce qui rend la formulation de nouvelles normes ECMAScript qui sont considérablement en retard de programmation. Ecmascript 5 n'est pas si ambitieux en termes d'objectifs. Dans ce mode, la syntaxe d'Ecmascript est devenue plus stricte, ce qui rend le code de répartition facile à un nombre facile de faire communément. Ce mode est très simple.
J'ai appris plus tard qu'en 2010, j'ai également écrit un court article pour discuter des défauts des mots clés, avec les éléments suivants.
coin
Il y a longtemps, la ville natale de la ville natale de Dieu Ma Liang a été nommée d'après son nom. Ma Liang n'a pas démissionné, mais a fait quatre mots. Plusieurs années plus tard, un étranger est venu ici et a arrêté une personne locale sur cette route.
Est-ce que c'est Shenma Road?
Oui, c'est Shenma Road.
Tu ne sais pas non plus?
Je suis cette personne, comment pourrais-je ne pas savoir.
Est-ce que c'est Shenma Road?
Vous savez ce que vous demandez.
Je ne sais pas que c'est Shenma Road.
Je ne vous ai pas dit que c'était Shenma Road?
Pouvez-vous le répéter?
Nympho
Après cela, les habitants se sont souvenus des opinions de Ma Liang cette année-là et ont soudainement réalisé. De quoi parle ma liang - n'utilisez pas l'abréviation.
Une question
Une tournée d'un jour à Wang er, son ami chinois, "J'ai un rêve. Je veux me montrer sur CCTV." CCTV de la boutique.
La question est de savoir quand Tom a dit son rêve, il est
A) ambitieux b) non ambitieux c) ambiguë d)
L'angr droit est b) et c).
texte
Les deux exemples ci-dessus de la Chine antique et moderne et des pays étrangers ont expliqué que la réflexion provoque parfois une ambiguïté. Cela existe également en JavaScript. Parfois, il est très difficile de régénérer une longue variable, comme ::
objectWithLongName1.propty1 = valeur1;
objectWithLongName1.propty2 = valeur2;
objectWithLongName1.propty3 = Value3;
objectWithLongName1.Method1 ();
Mais un nom clair est très important pour la lisibilité du programme. Ainsi, JavaScript fournit une instruction. L'exemple ci-dessus peut être réécrit:
Copier le code du code comme suit:
Avec (objectwithlongName1) {{{{
propy1 = valeur1;
Propy2 = valeur2;
Propy3 = valeur3;
Méthode1 ();
}
Cela économise beaucoup de kung-fu sur le clavier, et la structure du programme devient plus claire. Mais cette abréviation introduit l'ambiguïté. Les règles d'analyse de JavaScript sont de trouver les attributs de ces noms sur ObjectwithLongName1 en premier. C'est ce qu'il est expliqué par le code:
Copier le code du code comme suit:
If (objectwithlongName1.property1! == Undefined) {
If (objectwithlongName1.value1! == Undefined) {
objectwithlongName1.property1 = objectwithlongName1.value1;
} Autre {
objetwithlongName1.property1 = valeur1;
}
} Autre {
If (objectwithlongName1.value1! == Undefined) {
Propriété1 = objetwithlongName1.value1;
} Autre {
Propriété1 = valeur1; // peut-être 4
}
}
Ce que nous voulons est l'une de ces quatre possibilités, mais si vous ne faites pas attention, le programme exécutera une autre possibilité. De plus, cette façon d'écrire est également très difficile à résoudre les lecteurs du programme. D'un autre côté, cette incertitude affecte également les performances de la langue pour l'interpréteur JavaScript.
En fait, tant qu'une petite amélioration peut être supprimée, ces défauts peuvent être supprimés. Nous pouvons ajouter un numéro de point avant les attributs de l'objet, afin qu'il existe une distinction intuitive entre les attributs et les variables externes, et il existe de nombreuses autres langues qui le font. Nos exemples initiaux deviendront comme ceci:
Copier le code du code comme suit:
Avec (objectwithlongName1) {{{{
.propty1 = valeur1;
.propty2 = valeur2;
.propty3 = valeur3;
.Method1 ();
}
Avant que JavaScript n'apporte de telles améliorations, la puissance nocive est légère et nous devons essayer d'éviter d'utiliser la déclaration avec autant que possible. Nous pouvons toujours adopter certaines méthodes de changement.
Copier le code du code comme suit:
var o1 = objectWithLongName1;
o1.prpty1 = valeur1;
o1.prpty2 = valeur2;
o1.prpty3 = valeur3;
O1.Method1 ();
Ou pour cette situation:
objectWithLongName1.propty1 = objectWithLongName2.propty1;
objectWithLongName1.propty2 = objectWithLongName2.propty2;
Nympho
objectWithLongName1.propty10 = objectWithLongName2.propty10;
Peut être écrit comme:
Copier le code du code comme suit:
(Fonction (o1, o2, pl) {
pl.ForEach (fonction (it) {o1 [item] = o2 [item];});
}) (ObjectwithlongName1, objectwithlongname2, ['propy1', 'propy2', ..., 'propy10'));