The quiz

Recently some JavaScript quizzes appear then and there with the competitive titles wondering whether “you know JavaScript”? The recent quizzes were by kangax, Dmitry Baranovskiy and by Nicholas C. Zakas. All that quizzes are interesting, many questions though are mostly theoretical rather than practical.

And again just for fun, I suggest another ECMAScript quiz. I won’t use some boring things such as “a+++b”; but I will more sophisticated 😉 Some interesting questions are collected from newsgroups, mailing lists, forums and from my own.

Continue reading

Тонкости ECMA-262-3. Часть 8. Стратегия передачи параметров в функцию.

Read this article in: English, French.

Введение

В этой небольшой заметке мы рассмотрим стратегии передачи параметров в функции в ECMAScript.

В общем случае данный раздел компьютерной науки называется стратегия оценки, вычисления (evaluation strategy), т.е. свод правил для оценки и определения какого-либо выражения. Стратегия передачи параметров в функцию, является её частным случаем.
Continue reading

Тонкости ECMA-262-3. Часть 7.2. ООП: Реализация в ECMAScript.

Read this article in: English, French.

Введение

Данная статья является продолжением статьи об объектно-ориентированном программировании в ECMAScript. В первой части мы разбирали общую теорию и проводили параллели с ECMAScript. Перед прочтением текущей части, если есть необходимость, я рекомендую прочесть первую часть, поскольку в этой статьей мы будет активно опираться на пройденную терминологию. Желающие могут найти первую часть здесь: Тонкости ECMA-262-3. Часть 7.1. ООП: Общая теория.
Continue reading

Тонкости ECMA-262-3. Часть 7.1. ООП: Общая теория.

Read this article in: English, French.

Введение

В данной статье мы рассмотрим ключевые моменты, касающиеся объектно-ориентированного программирования в ECMAScript. Чтобы данный материал не получился “очередным” (ведь подобная тема поднималась уже не раз в различных статьях), больше внимания будет уделено, опять же, теоретическим аспектам, чтобы увидеть эти процессы изнутри. В частности, мы рассмотрим алгоритмы конструирования объектов, увидим, как строятся связи между ними (в том числе, и основная связь – наследование), а также дадим чёткие определения, которыми можно оперировать (что, надеюсь, развеет какие-то терминологические и идеологические сомнения и путаницы, возникающие часто в статьях об ООП в JavaScript). Continue reading

Тонкости ECMA-262-3. Часть 6. Замыкания.

Read this article in: English, French.

Введение

В этой заметке мы поговорим об одной из наиболее обсуждаемых тем, связанных с JavaScript — о замыканиях. Тема, по сути, избита; существует немалое количество статей, посвящённых этой структуре (некоторые из них очень хорошие, например, статья R. Cornford-a, представленная в списке дополнительной литературы), однако мы постараемся разобрать её более с теоретической точки зрения, и посмотрим, как замыкания в ECMAScript устроены изнутри.
Continue reading

Тонкости ECMA-262-3. Часть 5. Функции.

Read this article in: English, French.

Введение

В этой заметке мы подробней поговорим об одном из основных видов объектов ECMAScript — о функциях. В частности, рассмотрим различные виды функций, определим, как тот или иной вид влияет на объект переменных контекста и, какое содержание имеет цепь областей видимости контекста, связанного с определённым видом функции. Continue reading

Тонкости ECMA-262-3. Часть 4. Цепь областей видимости.

Read this article in: English, French.

Введение

Как нам уже известно из второй заметки, касающейся объекта переменных, данные контекста исполнения (переменные, декларации функции и формальные параметры функций) хранятся свойствами этого объекта переменных.
Continue reading

Тонкости ECMA-262-3. Часть 3. This.

Read this article in: English.

Введение

В данной небольшой заметке мы рассмотрим ещё одну сущность, связанную с контекстами исполнения. Речь пойдёт о ключевом слове this.
Continue reading

Тонкости ECMA-262-3. Часть 2. Объект переменных.

Read this article in: English, Chinese, French.

Введение

Постоянно в программах мы описываем функции и переменные, которые затем благополучно используем (вызываем, обращаемся) при построении наших систем. Однако, как и где интерпретатор находит наши данные (функции, переменные)? Что происходит, когда мы обращаемся к нужным нам объектам?
Continue reading

Тонкости ECMA-262-3. Часть 1. Контексты исполнения.

Read this article in: English, Chinese, French.

Введение

В этой заметке мы затронем контексты исполнения JavaScript и связанные с ними типы исполняемого кода.

Определения

Итак, каждый раз, когда происходит передача управления исполняемому коду ECMAScript-программы, осуществляется вход в контекст исполнения.
Continue reading