Search
Write a publication
Pull to refresh

Comments 49

поправьте что ли — примеры на каком языке то?
Речь про стандарт Ecma-262. Вы об этом?
скажем так. я не знаю что есть ECMAscript. ваш заголовок меня заинтересовал. но времени читать углубленно ссылку в википедии нет. вот и спрашиваю — речь таки о javascript или какой то разновидности?
Я понимаю, последний пример писался для того, чтобы напомнить о разнице в скорости доступа к локальным/глобальным переменным… но давайте будем честны — функция calc в её нынешнем виде будет работать быстрее, если не создавать локальную переменную, а просто вынести умножение «за скобки», перенеся его из тела цикла в return :) Мне кажется, здесь нужен какой-то другой пример.
а я было подумал что после безонной ночи математику забыл, когда мой ответ оказался не верным и вместо него прдлогался гораздо менее производительный вариант)
… бессонной… :) Приятных выходных :)
Ну пример немного надуманный, конечно )
>> Вопрос 4. Что выведет следующая программа?
>> alert([1,2,].length + [,1,2].length);

>> Ответ 4. «5»

Конечно из серии Jscript, но стоит уточнить, что IE выведет 6.
Второй вопрос в принципе даёт вполне ожидаемый результат. В отличи от остальных o_0

А вот alert([1,2,].length + [,1,2].length) в IE6 даёт 6.
IE лох, вы разве не знали?
этот собака считает, что [1,2,] = [1,2,undefined], из-за чего, например, нельзя использовать такую запись (строки добавлять-удалять удобно при редактировании):
arr = [
123,
123,
123,
123,
123,
];

а на такое он вообще вывалитcя с ошибкой (тоже ведь удобно!): obj = {
var1: 123,
var2: 123,
var3: 123,
}

и приходится писать так
obj = {
var1: 123
,var2: 123
,var3: 123
,var4: 123
}
запятая в конце не по стандартам, значит не правильно :) беспорно удобно, но вот… «а я одену костюм какашки и испорчу всем праздник» ИЕ пошел по простейшему пути, бьем по запятым и получаем массив/обьект зачем проверять значения?
Да и инициализация массива и объекта — несколько разные вещи все-таки.
UFO landed and left these words here
UFO landed and left these words here
или arguments[i]-0 для конвертации опять же)
Чтобы пример 1 сказал «number»:
var a = 123;
function foo() {
alert(typeof a);
window.a = '123';
}
foo();
Проверено в V8/Chrome 4/Linux.

Капитан Жабаскрипт: переменные, объявленные вне функций (то есть глобальные), присвоены window.
Ув. капитан Жабаскрипт, дело не в том кто куда присвоен, а в том что если в теле функции определена переменная, то функция забивает на глобальные, но пользоваться ей всеравно не дает до обьявления, собака на сене получается своеобразная, видит переменную, знает что она обьявлена, но пользоваться не дает, и знает что такая глобальная есть, но на нее забивает
Да, а если в теле функции нужна глобальная — она присвоена window.
Да, присвоена, но визуально новички не оценят это, если код будет таким как в топике. Обычно глобальные переменные используют напрямую, т.к. это короче и удобней, а здесь она не будет доступна

Еще как пример: есть «большая» функция, Вася обьявляет переменную ближе к концу, и функция перестает работать, в чем причина? ведь Вася просто обьявил переменную и все…
Что-то третий пример я даже с объяснением не понял. Можете показать, как бы выглядел код после автодополнения строк и к чему это приведет?
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
Javascript не надстройка, Javascript — реализация, не разгневайте Javascript =)
Я не понимаю смысла в противопоставлении Javascript и ECMAscript. Javascript это просто маркетинговое название ECMAscript и ничего больше. Реализации этого стандарта имеют свои названия, их десятки.
«Javascript это просто маркетинговое название ECMAscript»
вы ошибаетесь.
я ничего плохого и не говорил, никакого противостояния нет, просто я сделал акцент на слове «надстройка»
это реализация, ECMAscript — не язык программирования, а стандарт, а Javascript — язык который «придерживается» этого стандарта… я это хотел сказать
ECMAscript — не язык программирования, а стандарт, а Javascript — язык который «придерживается» этого стандарта


Вообще, ECMAscript — это язык программирования, а стандарт — это ECMA-262 (текущая версия 5).

Самый первый пункт из ECMA-262-3:

(гребанный Ctrl-enter)

Самый первый пункт из ECMA-262-3:

This Standard defines the ECMAscript scripting language

Javascript (trade mark) — название языка от (Spider)monkey engine, Jscript — от Microsoft и т.д.

Кстати, самому B.Eich-у (создатель Javascript), название ECMAscript никогда не нравилось ;)
хренасе, а где используется ECMAscript?=)
на сколько я понимаю сам по себе он нигде не используется, типа прототипа
ECMAscript — это чистая (эталонная) реализация стандарта (возможно, без хост-среды). В таком виде, используется редко где. В качестве конкретного примера можно привести часть стандартной библиотеки невышедшего ES4 (JS 2.0) — в исходниках можно видеть множество файлов с расширением .es ;)
Хотя, реализация может полностью соответствовать стандарту (чего в реале, конечно же, не существует ;)), но называться по-другому.
не самая худшая, вспомните об actionscript 1/2.
Вы заблуждаетесь, худшая, т.к все развивается, вспомните actionscript 3 и Lua… а вот Javascript на столько слабо развивается чтоя прям не знаю, с ее форками (Jscript) и кучей браузеров со своими «фичами»
ecma4 до сих пор не принят, что плачевно, согласен.
из браузеров с «фичами» претензии в основном к семейству IE (форк jscript туда же),
яваскрипт развивается, но крайне медленно, поддержки версий 1.6, 1.7, 2.0 до сих пор нет в IE.

А в actionscript 1 и 2 версий отсутствует поддержка регулярок, даже String.replace нету.
1. функция выведет undefined

2. alert(sum1(3, 4)); — выведет 7
alert(sum2(3, 4)); — вызовет ошибку sum2 is not function

3. [object Object]

4. выведет 5

5.
var Multiplier = 123; // в объекте Global
function calc() {
var s = 0,
i = 0,
localMultiplier = Multiplier,
l = arguments.length;
while (i < l) {
s += localMultiplier * arguments[i++];
}
return s;
}
UFO landed and left these words here
Ы) Я думал правильные ответы появятся потом, не думал что они белым цветом написаны )))))
да, в 3 пункте допустил оплошность. Почему-то показалось что написано return {
code: 1
}
т.е. без перевода строки. Невнимательность =(
а можно ссылку на список отличий ecmascript от javascript-реализаций?
Вы имеет в виду в чем конкретные реализации Javascript отходят от стандарта ECMAscript? Боюсь, тема довольно велика. Взять хотя бы тот факт, что многие браузеры расширяют Javascript по-своему.

Например:

stephenwalther.com/blog/archive/2008/02/26/javascript-magic-properties-using-count-proto-and-parent.aspx

SpiderMonkey расширяет каждый Javascript-объекта свойством "__proto__", которое ссылается на объект-прототип, и свойством "__count__", которое содержит текущее число свойств у объекта.
На 3-ем вопросе лажанулся ) сила привычки…
серьезная проблема кстати, иногда в коде видишь то что привык видеть, а не то что там на самом деле написано
Sign up to leave a comment.

Articles