SlideShare a Scribd company logo
1 of 34
Download to read offline
pragmadash Денис Речкунов
Node.js-разработчик
Распространённые ошибки в JavaScript
А что если знать
все о JavaScript?
Вот он узнал всё
Много
возможностей
Даже слишком
Большая
ответственность!
Мы должны защитить себя
сами
И так –начнем
Что не так?
Constructor.prototype.method = function () {
setTimeout(function () {
this.anotherMethod();
}, 5000);
};
Constructor.prototype.anotherMethod = function () { };
01.
02.
03.
04.
05.
06.
10
this === хозяин метода setTimeout
Constructor.prototype.method = function () {
setTimeout(function () {
this.anotherMethod();
}, 5000);
};
Constructor.prototype.anotherMethod = function () { };
Uncaught TypeError: undefined is not a function
01.
02.
03.
04.
05.
06.
11
this.Решение 1
Constructor.prototype.method = function () {
var self = this;
setTimeout(function () {
self.anotherMethod();
}, 5000);
};
Constructor.prototype.anotherMethod = function () { };
01.
02.
03.
04.
05.
06.
07.
12
this.Решение 2
Constructor.prototype.method = function () {
setTimeout(function () {
this.anotherMethod();
}.bind(this), 5000);
};
Constructor.prototype.anotherMethod = function () { };
01.
02.
03.
04.
05.
06.
13
Что не так?
var index = 123, arr = ['tro', 'lo', 'lo'];
for (var index = 0; index < arr.length; index++) {
arr[index] += 'o';
}
console.log(index);
Output: 123
01.
02.
03.
04.
05.
14
Scope не задается блоком
var index = 123, arr = ['tro', 'lo', 'lo'];
for (var index = 0; index < arr.length; index++) {
arr[index] += 'o';
}
console.log(index);
Output: 3
01.
02.
03.
04.
05.
15
Что не так?
var obj = {some: 'first', another: 'second'};
for(var key in obj) {
setTimeout(function () {
console.log(obj[key]);
}, 1000);
}
Output: first second
01.
02.
03.
04.
05.
06.
16
Переменная цикла мутабильна
var obj = {some: 'first', another: 'second'};
for(var key in obj) {
setTimeout(function () {
console.log(obj[key]);
}, 1000);
}
Output: second second
01.
02.
03.
04.
05.
06.
18
Переменная цикла.Решение 1
var obj = {some: 'first', another: 'second'};
for(var key in obj) {
(function (currentKey){
setTimeout(function () {
console.log(obj[currentKey]);
}, 1000);
})(key);
}
01.
02.
03.
04.
05.
06.
07.
08.
19
Переменная цикла.Решение 2
var obj = {some: 'first', another: 'second'};
Object.keys(obj)
.forEach(function (key) {
setTimeout(function () {
console.log(obj[key]);
}, 1000);
});
01.
02.
03.
04.
05.
06.
07.
20
Что не так?
var some = 'cool and not ';
function foo() {
console.log(some);
var some = 'awful!';
console.log(some);
}
foo();
Output: cool and not awful!
01.
02.
03.
04.
05.
06.
07.
21
Hoisting
var some = 'cool and not ';
function foo() {
console.log(some);// some === undefined
varsome = 'awful!';
console.log(some);
}
foo();
Output: undefined awful!
01.
02.
03.
04.
05.
06.
07.
22
Что плохого?
for (var index = 0; index < 1000000; index++) {
console.log(index);
}
01.
02.
03.
23
Длинный цикл
for (var index = 0; index < 1000000; index++) {
console.log(index);
}
Страница не обрабатывает события
Сервер не принимает новые подключения
01.
02.
03.
24
Длинный цикл.Решение
var index = 0;
function next() {
if (index >= 1000000) { return; }
console.log(index++);
setTimeout(next, 0);
}
next();
01.
02.
03.
04.
05.
06.
07.
25
Что нет так?
var arr = [];
arr[5] = 'some';
console.log(arr.length);
Output: 1
01.
02.
03.
26
length === max(index) + 1
var arr = [];
arr[5] = 'some';
console.log(arr.length);
Output: 6
Использовать push/unshift/pop/shift
01.
02.
03.
27
Что нет так?
var arr = [];
arr[5] = 'some';
delete arr[5];
console.log(arr.length);
Output: 0
01.
02.
03.
04.
28
undefined x 6
var arr = [];
arr[5] = 'some';
delete arr[5];
console.log(arr.length);
Output: 6
Не использовать delete
01.
02.
03.
04.
29
И последний пример
Что не так?
function foo () {
return
{
name: 'Batman'
};
}
console.log(foo());
01.
02.
03.
04.
05.
06.
07.
31
Конечно не Batman,он великолепен!
function foo () {
return
{
name: 'Batman'
};
}
console.log(foo());
Парсер подставит ';'
01.
02.
03.
04.
05.
06.
07.
32
И вообще советы
• Использовать Strict Mode
• Проверять код JShint
• Использовать IDE – WebStorm, например
• Boolean(x), Number(x), String(x) – для приведения типов
• Mozilla Developer Network
33
Вопросы?

More Related Content

What's hot

"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15MoscowJS
 
Изоморфные Java script приложения с catberry.js
Изоморфные Java script приложения с catberry.jsИзоморфные Java script приложения с catberry.js
Изоморфные Java script приложения с catberry.jslugnsk
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Ontico
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
nginx internals
nginx internalsnginx internals
nginx internalsredivy
 
JavaScript: прошлое, настоящее и будущее.
JavaScript: прошлое, настоящее и будущее.JavaScript: прошлое, настоящее и будущее.
JavaScript: прошлое, настоящее и будущее.FDConf
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Ontico
 
Жизнь после promises
Жизнь после promisesЖизнь после promises
Жизнь после promisesVitebsk DSC
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
 
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Iosif Itkin
 
PostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellPostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellAlexey Lesovsky
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"FDConf
 
Web весна 2013 лекция 9
Web весна 2013 лекция 9Web весна 2013 лекция 9
Web весна 2013 лекция 9Technopark
 
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИСTARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС2ГИС Технологии
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Ontico
 
FrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + Redux
FrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + ReduxFrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + Redux
FrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + ReduxFrontDays
 

What's hot (20)

"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
 
PowerShell
PowerShellPowerShell
PowerShell
 
Изоморфные Java script приложения с catberry.js
Изоморфные Java script приложения с catberry.jsИзоморфные Java script приложения с catberry.js
Изоморфные Java script приложения с catberry.js
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
nginx internals
nginx internalsnginx internals
nginx internals
 
JavaScript: прошлое, настоящее и будущее.
JavaScript: прошлое, настоящее и будущее.JavaScript: прошлое, настоящее и будущее.
JavaScript: прошлое, настоящее и будущее.
 
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)Что нового в nginx? / Максим Дунин (Nginx, Inc.)
Что нового в nginx? / Максим Дунин (Nginx, Inc.)
 
Асинхронный JavaScript
Асинхронный JavaScriptАсинхронный JavaScript
Асинхронный JavaScript
 
Жизнь после promises
Жизнь после promisesЖизнь после promises
Жизнь после promises
 
Devcamp nodejs-2010
Devcamp nodejs-2010Devcamp nodejs-2010
Devcamp nodejs-2010
 
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
 
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Syst...
 
PostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of HellPostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of Hell
 
"Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript""Пиринговый веб на JavaScript"
"Пиринговый веб на JavaScript"
 
Make Async Great Again
Make Async Great AgainMake Async Great Again
Make Async Great Again
 
Web весна 2013 лекция 9
Web весна 2013 лекция 9Web весна 2013 лекция 9
Web весна 2013 лекция 9
 
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИСTARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
 
FrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + Redux
FrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + ReduxFrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + Redux
FrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + Redux
 

Similar to #2 "Распространённые ошибки в JavaScript" Денис Речкунов

Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Googleyaevents
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кодаAndrey Karpov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода Pavel Tsukanov
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverIgor Khrol
 
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья СтусьПолный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья СтусьMail.ru Group
 
Тестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и SeleniumТестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и SeleniumSQALab
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаYandex
 
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Oleksii Okhrymenko
 
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...Alexey Paznikov
 
Филипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npmФилипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npmYandex
 
Фреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр БирюковФреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр БирюковDevDay
 
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29MoscowJS
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Andrey Karpov
 
Нетривиальная обработка ошибок
Нетривиальная обработка ошибокНетривиальная обработка ошибок
Нетривиальная обработка ошибокoelifantiev
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийAndrey Akinshin
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийMikhail Shcherbakov
 
JPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerJPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerAnton Arhipov
 
Selenium: приемы работы
Selenium: приемы работыSelenium: приемы работы
Selenium: приемы работыPaul Stashevsky
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiMichael Chernobrov
 

Similar to #2 "Распространённые ошибки в JavaScript" Денис Речкунов (20)

Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Google
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriver
 
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья СтусьПолный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
 
Тестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и SeleniumТестирование отклика Web-интерфейса с JMeter и Selenium
Тестирование отклика Web-интерфейса с JMeter и Selenium
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кода
 
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2
 
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
ПВТ - осень 2014 - Лекция 7. Многопоточное программирование без блокировок. М...
 
Филипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npmФилипп Ковалев — Путь в npm
Филипп Ковалев — Путь в npm
 
Фреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр БирюковФреймворк Slot, Good Parts, Александр Бирюков
Фреймворк Slot, Good Parts, Александр Бирюков
 
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
 
Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?Статический анализ кода: Что? Как? Зачем?
Статический анализ кода: Что? Как? Зачем?
 
Нетривиальная обработка ошибок
Нетривиальная обработка ошибокНетривиальная обработка ошибок
Нетривиальная обработка ошибок
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
 
Распространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложенийРаспространённые ошибки оценки производительности .NET-приложений
Распространённые ошибки оценки производительности .NET-приложений
 
JPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profilerJPoint 2016 - Etudes of DIY Java profiler
JPoint 2016 - Etudes of DIY Java profiler
 
Selenium: приемы работы
Selenium: приемы работыSelenium: приемы работы
Selenium: приемы работы
 
Tdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chaiTdd webpack + testem + mocha + chai
Tdd webpack + testem + mocha + chai
 

More from JSib

#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман Сальников#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман СальниковJSib
 
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил РеенкоJSib
 
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис РечкуновJSib
 
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...JSib
 
#9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников
#9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников#9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников
#9 "Chrome DevTools: отладка, консоль, профилирование" Роман СальниковJSib
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...JSib
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис РечкуновJSib
 
#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов#5 "React.js" Антон Артамонов
#5 "React.js" Антон АртамоновJSib
 
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
#4 "Особенности разработки кросс-браузерных расширений" Сергей РашитовJSib
 
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис РечкуновJSib
 

More from JSib (10)

#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман Сальников#13 "Управление состоянием в Redux" Роман Сальников
#13 "Управление состоянием в Redux" Роман Сальников
 
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
#12 "Создание двух desktop приложений на node-webkit и Electron” Михаил Реенко
 
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
#11 "Отзывчивый UI без блокировки Event Loop" Денис Речкунов
 
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
#10 "Опыт создания Real-time игры на WebGL, Angular, Socket.io и Node.js" Его...
 
#9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников
#9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников#9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников
#9 "Chrome DevTools: отладка, консоль, профилирование" Роман Сальников
 
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
 
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
#6 "Изоморфный фреймворк Catberry.js" Денис Речкунов
 
#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов#5 "React.js" Антон Артамонов
#5 "React.js" Антон Артамонов
 
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
#4 "Особенности разработки кросс-браузерных расширений" Сергей Рашитов
 
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
 

#2 "Распространённые ошибки в JavaScript" Денис Речкунов