JavaScript

Изучаем JavaScript, ч. 3: Функции: Тонкие моменты при работе с функциями в JavaScript

мая 18, 2011  |  Published in ClientSide, JavaScript

Ранее, в первой части, говорилось о том, что разницы между следующими типами создания функций нету:

function funcName(){};

funcName = function(){};

funcName = new Function();

На самом деле отличия есть, они достаточно незаметны, но знать их необходимо.

function funcName(){} — декларация (объявление) функции;

funcName = function(){} — присвоение переменной выражения — функции;

funcName = new Function(); — конструирование функции.
Read the rest of this entry »

Tags: ,

Изучаем JavaScript, ч. 2: Функции: Подбираемся ближе к функциям JavaScript

мая 16, 2011  |  Published in ClientSide, JavaScript

В прошлой части мы познакомились с функциями в JavaScript, а в этой мы рассмотрим их более подробно опираясь на уже имеющиеся из прошой части RubyDev JavaScript учебника.

Область видимости и контекст выполнения

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

Функции — это особые объекты, которые кроме пар свойство — значение могут содержать еще и выполняемый код. Как и любой объект, функция отгораживается от внешнего мира, создает свой собственный маленький мирок, который называется областью видимости или пространством. Переменные объявленные в теле функции являются локальными, то есть они замкнуты в функции, в ее мальньком мирке. При этом областью видимости таких переменных является тело функции, обратиться к ним из вне невозможно! Пример функции с внутренними переменными:

function helloFunction(){
  var hello = "Hello!";
  alert(hello);
}

helloFunction();//Hello!

alert(hello);//Переменной hello в текущем пространстве вызова alert не существует!

Read the rest of this entry »

Tags: ,

Изучаем JavaScript, ч. 1: Функции: Основы работы с функциями в JavaScript

мая 11, 2011  |  Published in ClientSide, JavaScript, Новости

RubyDev учебник по клиентскому JavaScript

Почему именно по клиентскому? — Во-первых меня, по крайней мере пока, не интересует серверный javascript и не интересует node.js и т.п. Во-вторых, клиентский яваскрипт все-таки более популярен и конкретно он меня наибольшим образом интересует. В любом случае, если меня заинтересует серверный JavaScript и работа с Node.js, то будет выпущен соответствующий новый, отдельный цикл, уже по самой технологии, а не по самому JavaScript, поскольку отличия не существенны, это по прожнему тот же javaScript, только выполняющий работу иного характера.

Данный учебник не будет описывать работу со строками или массивами и не будет преднамеренно знакомить вас с библиотекой предопределенных «классов» и методов. Все это так потому, что целью данного учебника не является его становление справочником, но предоставление вам понимания того, что такое JavaScript, его концепций и стиля написания программ.

В этом цикле статей будет также расмотрен фреймворк jQuery, который позволяет разработчику сконцентрироваться на написании логики не отвлекаясь на кроссбраузерность и так далее. Другими словами jQuery берет на себя весь рутинный труд.

Не смотря на то, что JavaScript является объектно-ориентированным (ОО) языком программирования, для него более родственной является концепция функций.

Любая функция в JavaScript — это экземпляр класса Function. Честно признаться, в JavaScript не того, что принято называть классами. Работу классов в JavaScript выполняют функции — конструкторы (или просто конструкторы), которые создают объекты с определенными предопределенными свойствами. Ниже приведен пример использования конструктора для создания объекта типа Array:

myArray = new Array(1,2,3,4,5); //1,2,3,4,5
myArray; //1,2,3,4,5
typeof myArray; //object
myArray.constructor; //возвращает конструктор Array

Пояснения:
1. Для создания новых объектов конструкторы вызываются через выражение new. Так же как и классы, функции конструкторы могут свои собственные свойства.
2. Оператор typeof используется для получения типа объекта. К сожалению он годится только для предопределенных типов: строки, числа, булевы значения. Все остальные объекты, например массивы и пользовательские объекты будут иметь тип object, что не о чем не говорит.
3. Метод constructor возвращает функцию-конструктор объекта — приемника.

Обявить функцию можно при помощи двух способов: выражения function и конструктора Function, ниже приведены примеры обоих:

function myFunction(){
alert("Hello!");
}

myFunction(); //Hello

var myFunction = new Function("alert(\"Bye-bye!\");");

myFunction(); //Bye-bye!

Пояснения:
1. Как видите, имя функции — это всего-лишь переменная, которая ссылается на объект функции в памяти компьютера.
2. Создание функций с использованием конструкторов — это моветон, посколько данный метод сильно сничает читабельность и использует eval для преобразования строки в код.
Read the rest of this entry »

Tags:

Изучаем JavaScript при помощи иллюстраций

апреля 23, 2011  |  Published in JavaScript

Один из секретов отличного JavaScript разработчика — это ясное понимание семантики языка JavaScript. Эта статья расскажет вам об основных элементарных частях языка JavaScript используя простые для понимания иллюстрации того, как работают программы написанные на JavaScript. Read the rest of this entry »

Tags: