SlideShare a Scribd company logo
JavaScript. Introduction (in russian)
Михаил Давыдов
Разработчик JavaScript
JavaScript
3
История
•  Брендан Айх
•  1995 год, Netscape
•  Цель – альтернатива VBScript
•  Разработан за 15 дней
•  Имя JavaScript – маркетинговый ход
4
ECMAScript и JavaScript
•  JavaScript (c) Oracle Corporation
•  JScript=JavaScript
•  Основывается на стандарте ECMAScript
•  Текущая версия ECMAScript – 5.1
•  Все пишут на ECMAScript – 3
•  Новые версии сохраняют совместимость
Особенности языка
Виртуальная машина
Автоматическое приведение типов
Утиная типизация
Мультипарадигменный
6
Виртуальная машина
DOM	
  VM	
  JS	
  
Среда	

Виртуалка	

GUI	
  
Интерфейс
7
Автоматическое приведение типов
•  2 + “3” == “23”!
•  2 + 3 == 5!
•  [] + 1 == “1”!
•  if ([1, 2, 4]) {}!
•  0 == “0”!
8
Если оно выглядит как утка, плавает как утка и крякает как утка, то это,
вероятно, утка и есть.
var Duck = {
lookLikeDuck: true,
quackLikeDuck: true,
swimLikeDuck: true,
};
if (a.lookLikeDuck &&
a.quackLikeDuck &&
a.swimLikeDuck) {
return “Это Утка!”;
}
Утиная типизация
9
Мультипарадигменный
•  Очень гибкий
•  Функциональный подход
•  Классовый подход
–  Классов в JavaScript нет
•  Прототипный подход
10
Используется библиотека Mootools!
var Animal = new Class({
initialize: function(age){
this.age = age;
}
});
var Cat = new Class({
Extends: Animal,
initialize: function(name, age){
this.parent(age);
this.name = name;
}
});
var myCat = new Cat('Pewpew', 20);
alert(myCat.name);
alert(myCat.age);
Классовый подход
11
Используется ECMAScript 5.1
var items = [1, 2, 3, 4, {}];
var result = items.filter(function (item) {
return typeof item === “number”;
})
.map(function (item) {
return item * 2;
})
.every(function (item) {
return item > 2;
});
alert(result); // false
Функциональный подход
12
var Animal = function(age){
this.age = age;
};
var Cat = function(name, age){
Animal.call(this, age);
this.name = name;
}
Cat.prototype = new Animal();
var myCat = new Cat('Pewpew', 20);
alert(myCat.name);
alert(myCat.age);
Прототипный подход
Распространение
Поддержка языка
Распостраненность
Популярность
14
Разработка языка
•  Google
•  Mozilla
•  Microsoft
•  Opera
•  Apple
•  Oracle
•  …
15
Распостраненность языка
•  Есть практически в любом устройстве
–  Компьютеры
–  Телевизоры
–  Планшеты
–  Телефоны
•  Есть и на сервере
–  Серверный JavaScript – Node.js, Narwal, Rhino
–  Встроенная Виртуальаня машина в БД
•  Можно программировать железо
–  Arduino + johnny-five
•  Не только браузер
–  Microsoft Office
–  OpenOffice.org
–  PDF
16
Распостраненность языка
•  Огромное число библиотек для всего
–  DOM
–  2D графика
–  3D графика
–  Работа со звуком
•  Транслирование в JavaScript
–  CoffeeScript
–  Dart
–  TypeScript
•  Возможно это самая распостраненная
виртуальная машина
17
Популярность языка
•  Низкий порог входа
–  Блокнот и браузер
•  № 1 на Github
•  TIOBE Index – 11 место
–  Год назад 12
Проблемы языка
XSS
Открытый код
Асинхронное программирование
19
Проблемы безопасности
•  XSS
–  Атака на пользовательскую страницу
–  Хищение сессионных данных
–  Порча данных
–  Боты
–  DDOS
•  Тщательная обработка полей
–  Важно проверять все входные данные
•  Ваш скрипт не единственный на странице
–  Плагины
–  Пользовательские скрипты
–  Боты
–  Вирусы
20
<form>
<input id="name">
</form>
My name is <span id="result"></span>
XSS
var inputName = document.getElementById("name"),
result = document.getElementById("result");
inputName.addEventListener("keyup", function () {
result.innerHTML = inputName.value;
}, false);
http://jsfiddle.net/FfXaJ/2/
21
<img src="a" onerror="alert(0)"/>
Демки
2D
3D
Видео
Мобильные приложения
Firefox OS
23
2D – Графики
http://www.humblesoftware.com/flotr2
24
2D – Игры
http://playbiolab.com/
25
3D – WebGL, Three.js
http://mrdoob.github.com/three.js/
26
Видео
http://media.chikuyonok.ru/ambilight/
27
PhoneGap
- Карты
- Контакты
- Звонки
- Компас
- GPS
- Акселометр
http://phonegap.com/
28
LinkedIn Mobile
29
Firefox Mobile OS
Наш рабочий процесс
31
Инструменты
• http://jsfiddle.net/
• http://jslint.com/
32
a=function(b)
{
if(b)return 1
};a();
Качество кода
var█a█=█function█(b)█{
if█(b)█{
return 1;
}
};
a();
http://jsfiddle.net/4En9B/	

http://jsfiddle.net/4En9B/1/
33
Задание 1
•  Причесать ваш код из тестового задания
•  Ваш скрипт должен лежать отдельно от html
•  Нужно отформатировать код
–  Использовать http://jslint.com/
–  Или выбрать свой кодстайл
•  Обратить внимание
–  Наличие var
–  Отступы рядом с =, операторами и function
–  Или табы или пробелы
–  Заменить new Array() на []; new Object() на {};
Михаил Давыдов
Разработчик JavaScript
azproduction@yandex-team.ru
Спасибо

More Related Content

PPTX
Эволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru Group
PDF
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
PDF
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
PDF
Frontend - экосистема и будущее: iforum 2015
PPTX
Язык программирования PHP. EasyCode. Стартовая презентация.
PPTX
Язык программирования PHP
PDF
CodeFest 2012. Евтухович И. — Как мы делали Групон
Эволюция разработки (Ермаков Игорь), Форум технологий Mail.Ru Group
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Frontend - экосистема и будущее: iforum 2015
Язык программирования PHP. EasyCode. Стартовая презентация.
Язык программирования PHP
CodeFest 2012. Евтухович И. — Как мы делали Групон

What's hot (18)

PDF
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PDF
Путь к Go на конкретном примере
PDF
Drupal cafe 1.1
PDF
Artem Zigar. Development Tools. Readability of a code.
PDF
Современный фронтенд за 30 минут.
PPTX
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
PPT
Current State of Server Side JavaScript
PDF
Разработка API для большого, нагруженного сервиса
PDF
JavaScript on frontend and backend (in Russian
PDF
Say Perl на весь мир
PDF
Данил Ильиных и Владимир Иванов, «Велогосипед»
ODP
Server Side Javascript (ru)
PDF
Фронтенд разработка без боли
PPTX
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
PDF
Юрий Насретдинов, Badoo
PDF
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
PDF
Windows DevOps with Ansible
PDF
Что такое современная Frontend разработка
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
Путь к Go на конкретном примере
Drupal cafe 1.1
Artem Zigar. Development Tools. Readability of a code.
Современный фронтенд за 30 минут.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
Current State of Server Side JavaScript
Разработка API для большого, нагруженного сервиса
JavaScript on frontend and backend (in Russian
Say Perl на весь мир
Данил Ильиных и Владимир Иванов, «Велогосипед»
Server Side Javascript (ru)
Фронтенд разработка без боли
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Юрий Насретдинов, Badoo
ОЛЕКСАНДР ХОТЕМСЬКИЙ «Антипаттерни та велосипеди в JavaScript автоматизації» ...
Windows DevOps with Ansible
Что такое современная Frontend разработка
Ad

Viewers also liked (6)

PDF
JavaScript. История, развитие, перпективы
PPT
Подробная презентация JavaScript 6 в 1
PDF
Дэвид Флэнаган — Javascript (5 издание)
PDF
Алексей Воинов — Языки программирования
PPTX
Кратчайшая история JavaScript
PDF
Александр Кашеверов - Коротко про WEB
JavaScript. История, развитие, перпективы
Подробная презентация JavaScript 6 в 1
Дэвид Флэнаган — Javascript (5 издание)
Алексей Воинов — Языки программирования
Кратчайшая история JavaScript
Александр Кашеверов - Коротко про WEB
Ad

Similar to JavaScript. Introduction (in russian) (20)

PDF
Interactive Lab: Разработка Flash игр на Unity3D
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PDF
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
PPTX
Daemons In Web on #devrus
PDF
Xe4 launch мобильная разработка всеволод_леонов
PPT
Platypus platform ivbit
PPTX
Little Service in 2h
PDF
Баба Яга против!
PDF
TК°Conf. Организация разработки Frontend. Виталий Слободин.
PDF
Фронтенд в Яндексе
PDF
Обзор перспективных баз данных для highload / Юрий Насретдинов
PPTX
Scripting languages
PDF
Профессиональная разработка в суровом Enterprise
PDF
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
PDF
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
PDF
Desktop app based on node js and html5
PDF
Mobile web apps
PDF
Фронтенд в Яндексе
PDF
Фронтенд в Яндексе
PDF
Как сделать веб-карту, сохранить здоровье и возненавидеть IE
Interactive Lab: Разработка Flash игр на Unity3D
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
"Подходы, используемые в разработке iOS-клиента Viber" Кирилл Лашкевич (Viber)
Daemons In Web on #devrus
Xe4 launch мобильная разработка всеволод_леонов
Platypus platform ivbit
Little Service in 2h
Баба Яга против!
TК°Conf. Организация разработки Frontend. Виталий Слободин.
Фронтенд в Яндексе
Обзор перспективных баз данных для highload / Юрий Насретдинов
Scripting languages
Профессиональная разработка в суровом Enterprise
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Баба-Яга против! — Роман Дворнов, Ostrovok.ru
Desktop app based on node js and html5
Mobile web apps
Фронтенд в Яндексе
Фронтенд в Яндексе
Как сделать веб-карту, сохранить здоровье и возненавидеть IE

More from Mikhail Davydov (15)

PDF
Components now! (in russian)
PDF
JavaScript. Event Model (in russian)
PDF
Code Style (in russian)
PDF
Ajax and Transports (in russian)
PDF
Introduction in Node.js (in russian)
PDF
JavaScript. Loops and functions (in russian)
PDF
JavaScript. OOP (in russian)
PDF
JavaScript. Event Loop and Timers (in russian)
PDF
Modules and assembling of JavaScript (in russian)
PDF
JavaScript. Basics (in russian)
PDF
JavaScript. Async (in Russian)
PDF
Components now!
PDF
Dump-IT Загрузка и инициализация JavaScript
PDF
Dart - светлая сторона силы?
PDF
Making Scalable JavaScript Application
Components now! (in russian)
JavaScript. Event Model (in russian)
Code Style (in russian)
Ajax and Transports (in russian)
Introduction in Node.js (in russian)
JavaScript. Loops and functions (in russian)
JavaScript. OOP (in russian)
JavaScript. Event Loop and Timers (in russian)
Modules and assembling of JavaScript (in russian)
JavaScript. Basics (in russian)
JavaScript. Async (in Russian)
Components now!
Dump-IT Загрузка и инициализация JavaScript
Dart - светлая сторона силы?
Making Scalable JavaScript Application

JavaScript. Introduction (in russian)