В декабре 2009 года Ecmascript выпустил Ecmascript 5, который был выпущен для последней версии стандарта Ecmascript 3 для предыдущей версии, хотя JavaScript находится на веб -программировании, ECMASCRING 4 в конечном итоге из -за основных производителей и организаций, связанных с интересами. Сложность этого языка (то есть будь то увеличение большого количества характеристик для расширения функции ECMASCRICT) и умерла, что создает формулировку новых стандартов Ecmascript, которые значительно отстают от программирования. Ecmascript 5 не так амбициозен с точки зрения целей. В этом режиме синтаксис Ecmascript стал более строгим, что делает много обычно простых простых кодов, больше не допускается, включая обязательные объявления переменных и не обдумывая с помощью заявлений. Этот режим очень прост.
Позже я узнал, что в 2010 году я также написал короткую статью, чтобы обсудить дефекты с ключевыми словами со следующими.
клин
Давным -давно, родной город Бога Ма -Лян, был назван в честь его имени. Ма Лян не ушел в отставку, но сделал четыре слова. Много лет спустя иностранец пришел сюда и остановил местного жителя на этой дороге.
Это Шэньма -роуд?
Да, это дорога Шенма.
Вы тоже не знаете?
Я этот человек, как я мог не знать.
Это Шэньма -роуд?
Вы знаете, что вы спрашиваете.
Я просто не знаю, что это дорога Шенма.
Разве я не сказал вам, что это Шенма -роуд?
Вы можете сказать это еще раз?
Нимфо
После этого местные жители вспомнили мнения Ма Ляна в этом году и внезапно осознали. Что говорит Ма Лян, не используйте аббревиатуру.
Вопрос
Одинденный тур в Ван Эр, его китайский друг: «У меня есть мечта. Я хочу показать себя на виде видеонаблюдения». Магазин CCTV.
Вопрос в том, когда Том сказал свою мечту, он
А) амбициозный б) не амбициозный в) неоднозначный г)
Правый ANGR - B) и C).
текст
Два вышеупомянутых примера древнего и современного Китая и зарубежных стран объяснили, что размышление иногда вызывает двусмысленность. Это также существует в JavaScript. Иногда очень трудно регенерировать длинную переменную, например ::
ObjectWithLongName1.propty1 = value1;
ObjectWithLongName1.propty2 = value2;
ObjectWithLongName1.propty3 = value3;
ObjectWithLongName1.method1 ();
Но четкое имя очень важно для читаемости программы. Таким образом, JavaScript предоставляет с оператором. Приведенный выше пример может быть переписан:
Код кода копирования следующим образом:
С (objectwithlongname1) {{
propty1 = value1;
propy2 = value2;
propy3 = value3;
Method1 ();
}
Это экономит много кунг -фу на клавиатуре, и структура программы становится более ясной. Но эта аббревиатура вводит двусмысленность. Правила анализа JavaScript должны найти атрибуты этих имен на ObjectWithlongName1. Это то, что объясняется кодом:
Код кода копирования следующим образом:
If (objectwithlongname1.property1! == undefined) {
If (objectWithLongName1.value1! == undefined) {
ObjectWithLongName1.property1 = ObjectWithlongName1.value1; // может 1
} Еще {
ObjectWithlongName1.property1 = value1; // Возможно 2
}
} Еще {
If (objectWithLongName1.value1! == undefined) {
Property1 = ObjectWithlongName1.value1;
} Еще {
Свойство1 = значение1; // Возможно 4
}
}
Мы хотим, чтобы одна из этих четырех возможностей, но если вы не будете осторожны, программа выполнит другую возможность. Более того, этот способ написания также очень трудно решить читателей программы. С другой стороны, эта неопределенность также влияет на производительность языка для интерпретатора JavaScript.
Фактически, до тех пор, пока можно удалить небольшое улучшение, эти дефекты могут быть удалены. Мы можем добавить номер точки перед атрибутами объекта, так что существует интуитивное различие между атрибутами и внешними переменными, и есть много других языков, которые делают это. Наши первоначальные примеры станут такими:
Код кода копирования следующим образом:
С (objectwithlongname1) {{
.propty1 = value1;
.propty2 = value2;
.propty3 = value3;
.method1 ();
}
До того, как JavaScript внесла такие улучшения, две вредные мощности являются легкой, и мы должны пытаться избежать использования оператора с помощью оператора как можно больше. Мы все еще можем принять некоторые методы изменения.
Код кода копирования следующим образом:
var o1 = objectwithlongname1;
o1.prpty1 = value1;
o1.prpty2 = value2;
o1.prpty3 = value3;
o1.method1 ();
Или для этой ситуации:
ObjectWithLongName1.propty1 = ObjectWithLongName2.propty1;
ObjectWithLongName1.propty2 = ObjectWithLongName2.propty2;
Нимфо
ObjectWithLongName1.propty10 = ObjectWithLongName2.propty10;
Может быть написано как:
Код кода копирования следующим образом:
(Функция (O1, O2, PL) {
pl.foreach (function (it) {o1 [item] = o2 [item];});
}) (ObjectWithLongName1, ObjectWithLongName2, ['Propty1', 'propty2', ..., 'propty10'));