Em dezembro de 2009, o ECMAScript lançou o ECMAScript 5, que foi lançado para a última versão do padrão ECMAScript 3 para a versão anterior. A complexidade desse idioma (ou seja, se deve aumentar um grande número de características para expandir a função do ECMAScript) e morreu, fazendo a formulação de novos padrões ECMAScript que ficam muito atrás da programação. O ECMAScript 5 não é tão ambicioso em termos de metas. Nesse modo, a sintaxe do ECMAScript tornou -se mais rigorosa, tornando muitas vezes que o código fácil de propenso não é mais permitido, incluindo declarações variáveis obrigatórias e não permitindo as declarações. Este modo é muito simples.
Mais tarde, aprendi que, em 2010, também escrevi um pequeno artigo para discutir os defeitos de palavras -chave, com o seguinte.
cunha
Há muito tempo, a cidade natal de God Ma Liang recebeu o nome de seu nome. Ma Liang não renunciou, mas fez quatro palavras. Muitos anos depois, um estrangeiro veio aqui e parou uma pessoa local nesta estrada.
Esta é a Shenma Road?
Sim, esta é a Shenma Road.
Você também não sabe?
Eu sou essa pessoa, como eu não poderia saber.
Esta é a Shenma Road?
Você sabe o que você pergunta.
Só não sei se isso é Shenma Road.
Eu não te disse que esta é a Shenma Road?
Você pode dizer de novo?
Nympho
Depois disso, os habitantes locais se lembraram das opiniões de Ma Liang naquele ano e repentinamente perceberam. Do que Ma Liang está falando -não use a abreviação.
Uma pergunta
Uma turnê de um dia para Wang er, seu amigo chinês: "Eu tenho um sonho. Quero me mostrar no CCTV". CCTV da loja.
A questão é quando Tom disse seu sonho, ele é
A) ambicioso b) não ambicioso c) ambíguo d)
O âmbito certo é b) e c).
texto
Os dois exemplos acima da China antiga e moderna e países estrangeiros explicaram que a reflexão às vezes causa ambiguidade. Isso também existe em JavaScript. Às vezes, é muito problemático regenerar uma longa variável, como ::
objectwithlongName1.propty1 = value1;
objectwithlongName1.propty2 = value2;
objectwithlongName1.propty3 = value3;
objectwithlongName1.method1 ();
Mas um nome claro é muito importante para a legibilidade do programa. Portanto, o JavaScript fornece uma declaração. O exemplo acima pode ser reescrito:
Copie o código do código da seguinte forma:
Com (objectwithlongName1) {{
Apropty1 = Value1;
propy2 = value2;
propy3 = value3;
Método1 ();
}
Isso salva muito Kung Fu no teclado e a estrutura do programa fica mais clara. Mas essa abreviação introduz ambiguidade. As regras de análise do JavaScript devem encontrar os atributos desses nomes no ObjectWithlongName1 primeiro. É isso que é explicado pelo código:
Copie o código do código da seguinte forma:
If (objectwithlongName1.property1! == indefinido) {
If (objectwithlongName1.value1! == indefinido) {
ObjectWithlongName1.Property1 = ObjectWithlongName1.Value1;
} Outro {
ObjectWithlongName1.Property1 = Value1;
}
} Outro {
If (objectwithlongName1.value1! == indefinido) {
Propriedade1 = ObjectWithlongName1.Value1;
} Outro {
Propriedade1 = Valor1;
}
}
O que queremos é uma dessas quatro possibilidades, mas se você não tomar cuidado, o programa executará outra possibilidade. Além disso, essa maneira de escrever também é muito difícil de resolver os leitores do programa. Por outro lado, essa incerteza também afeta o desempenho do idioma para o intérprete JavaScript.
De fato, desde que uma pequena melhoria possa ser removida, esses defeitos poderão ser removidos. Podemos adicionar um número de ponto antes dos atributos do objeto, para que haja uma distinção intuitiva entre os atributos e as variáveis externas, e existem muitos outros idiomas que fazem isso. Nossos exemplos iniciais se tornarão assim:
Copie o código do código da seguinte forma:
Com (objectwithlongName1) {{
.Propty1 = Value1;
.Propty2 = value2;
.Propty3 = Value3;
.method1 ();
}
Antes que o JavaScript fizesse essas melhorias, o poder prejudicial é leve e devemos tentar evitar o uso da instrução com o máximo possível. Ainda podemos adotar alguns métodos de mudança.
Copie o código do código da seguinte forma:
var o1 = objectWithlongName1;
o1.prpty1 = value1;
o1.prpty2 = value2;
o1.prpty3 = value3;
O1.Method1 ();
Ou para esta situação:
objectwithlongName1.propty1 = objectWithlongName2.Propty1;
objectwithlongName1.propty2 = objectWithlongName2.Propty2;
Nympho
ObjectWithlongName1.Propty10 = ObjectWithlongName2.Propty10;
Pode ser escrito como:
Copie o código do código da seguinte forma:
(Função (O1, O2, PL) {
pl.foreach (function (it) {o1 [item] = o2 [item];});
}) (ObjectWithlongName1, objectWithlongName2, ['Apropty1', 'Apropty2', ..., 'Apropty10'));