Основы Javascript
Javascript - важная составляющая Сети, и фулл-стек разработчику необходимо знать больше, чем просто циклы и манипуляция с DOM в jQuery. Важно понять как реально работает JS, подобно тому, как мы изучали Ruby перед изучением Rails.
Достаточно легко реализовать несложное взаимодействие с браузером, используя Javascript и разумное количество jQuery. Но нас интересует не это - необходимо почувствовать себя комфортно, создавая полностью новый функционал на JS и работая с серьезными фреймворками и таким же кодом. Это подразумевает то, что вы должны понять, чем "дышит" JS, и какие приемы программирования используются в реальном мире.
Вы уже должны были пройти урок Основы Javascript, а теперь мы пойдем гораздо дальше в изучении JS (даже проводя аналогию между изучением Основ Ruby и изучением самого Ruby).
Пункты для размышления
Перед вами достаточно длинный список вопросов, но это то, что необходимо знать.
- Как подключить файл Javascript к файлу HTML?
- Как вставить Javascript напрямую в код HTML?
- Как создать и запустить код Javascript в программах, подобных jsfiddle?
- Как создать объект с помощью метода "Constructor"?
- Как создать объект с помощью "литерального" метода?
- Что возвращает JS при обращении к несуществующему атрибуту объекта?
- Как добавить или удалить элементы в массиве?
- В чем разница между
=
,==
, и===
? - Что в JS "истина" или "ложь":
"0"
,NaN
,null
,"words"
,""
,[]
,undefined
,{}
, 1, 0? - Как получить длину строки?
- Как получить символ из строки?
- Как работает конструкция "switch"?
- Как можно использовать объекты для выполнения той же задачи?
- Как реализовать цикл
for
?for...in
?while
? - Как прервать цикл или пропустить итерацию?
- Что такое "зарезервированные слова"?
- Как соединить вместе два массива?
- Как провести сортировку массива? В обратную сторону?
- Как с помощью метода
#forEach
получить каждый элемент в массиве? - В чем объекты Javascript похожи на хэши в in Ruby?
- Как объявить функцию (два способа)?
- Что такое "анонимная функция"? Чем она похожа на блоки в Ruby?
- Как передать функции аргументы?
- Что возвращает функция?
- Что такое "IIFE"?
- Если функция сохранена в какой-то переменной some_var, какая будет разница между передачей этой функции другой функции в качестве аргумента и немедленным ее исполнением при ее вызове? (подсказка: скобки)
- Как проверить Тип объекта? (строка, число, функция, undefined...)
- Что означает
this
в Javascript? - Чем похожи и различаются
this
иself
в Ruby? - Как создать переменную в глобальной области видимости? В локальной?
- Для чего используются замыкания?
- Как использовать замыкание для того, чтобы "закрыть" значение внутри функции?
- Как упрощает жизнь
#bind
в разрезе замыканий и областей видимости?
Ваши задания
- Прочтите этот пост, который неплохо мотивирует на изучение Javascript.
- Закончите курс Codecademy (пока что вы его прошли до 5 урока).
- Пробегитесь по Основам Javascript от Mozilla, освежив в памяти курс Codecademy.
Дополнительные ресурсы
Этот раздел содержит полезные ссылки на дополнительные материалы. Это не обязательно, так что расценивайте их как нечто полезное, если вы хотите поглубже погрузиться в тему
- Учебник по Javascript от discovermeteor.com
- Блог, раскрывающий концепции JS. Мы будем его использовать в последующих уроках.
- The Missing Manual - отличная книга по JS.
- Лучшие книги по Javascript
- Эффективный Javascript от Дэвида Хермана (David Herman) - краткий, но глубокий взгляд на концепции и примеры работы с Javascript.
- JSНиндзя от Джона Ресига (John Resig) - продвинутые концепции для JS разработчика среднего уровня
- Стэнфордский курс Javascript - для него вам будет необходим iTunes
- SuperheroJS, отличная коллекция полезных ссылок
- Сравнение синтаксиса Javascript и Ruby от Агента Купера
- "Как я работаю: Поехали!" от Дуга Срокфорда - взгляд "сверху" на некоторые вопросы разработки.
- CodeAvengers.com - курсы по JS, HTML, подобные Codecademy.