Как стать автором
Обновить

Комментарии 34

Неплохая статья для новичков :)
Вы пропустили много точек с запятыми в своём коде…
спасибо, исправлено;
Еще не помешает унифицировать пробелы вокруг арифметических операций, это косметика, но хорошо сказывается не читаемости, что для урока важно.
Поправил
как по мне; в javascript не нужны
Это относительно, в некоторых ситуациях в устаревших браузерах (читай как IE) код может быть интерпретирован не верно. А так конечно, дело вкуса
Возможно я чего-то не знаю, начал более тесное общение с JS совсем недавно, но во всех учебных материалах говориться, что необходимо ставить; везде, чтобы механизм автоматического разделения участков кода не создал вам странный неуловимый баг.

Более того код вы будете сжимать, что в последствии тоже даст баги и всё-равно вам придётся её поставить.
ну нормальный обфускаторы ставят все сами, но да, лучше обезопасить себя
yuicompressor не нормальный обфускатор? Вроде бы, один из основных, однако пару раз заставил меня поставить; и убрать debugger;-ы
Это в идеальном случае, но мало ли какой код вы напишите и как сработает обфускатор. И за те 30-минут, что вы фиксили баг можно поставить море точек с запятыми.
100 строк кода? их даже в perl-стиле написать можно. Непонятно, почему они сам факт поддержки transition проверяют при помощи feature detection, а вот саму функцию выбирают уже при помощи проверки user-agent. Код, в общем, хорош, но это не значит, что надо из него брать порочную практику глотать знаки разделения. В русском языке тоже можно без точек с запятыми писать.
я не считаю это порочной практикой. если ие этого не поддерживал когда-то это еще ничего не значит. по-моему их всегда там быть не должно было, так что моя точка зрения не хуже вашей.
огромное человеческое спасибо за статью!
на самом деле многое прояснилось
спасибо за отзыв! Боялся, что все равно все запутал, сомневался что смог изложить доступно насколько хотел
Спасибо, было интересно почитать
А ну-ка, новички, задания для самоконтроля: что выведут 2 приведенные ниже куски кода и почему?

Первый:
if (42 == 42) {
function test() {
console.log('first');
}
} else {
function test() {
console.log('second');
}
}


Второй:
var funcs = []
for (var i = 0; i < 10; i++)
funcs.push(function() {
console.log(i);
});

console.log('first');
for(var i = 0; i < 10; i++)
funcs[i]();
console.log('second');
for(var j = 0; j < 10; j++)
funcs[j]();


первый ничего не выведет. ;)
Сорри, в первом не хватает в конце вызова функции test();
интересно почему во втором варианте после for а в переменной i остается 10
спасибо
а, все, понял. Потому что условия цикла все ровно выполняются, но не само тело цикла.
Да первый тест не много не в тему, хотя может это тут тоже нужно было раскрыть, но я видел на хабре уже топики, где это раскрывалась.
Вся суть в том, что объявление функций самая приоритетная функция и вот такой код:
function test() {
    function supertest() {
         alert('NIKOGDA NE POKAJETSYA');
    }
    return supertest;
    function supertest() {
         alert('A ETA POKAJETSYA');
    }
}
var a = test();
a() // A ETA POKAJETSYA!

будет для не посвященных очень странно работать :)
первый ничего не выведет. ;)
ошибся
Спасибо, интересная статья.
Если не ошибаюсь, везде по тексту, кроме первого вхождения (так же просто) «также» пишется слитно. «Небольшой» (конструктор) тоже без пробела. Мелочь, а отвлекает.
Я с Ваших слов не понял чем отличаются
Function.bind
Function.call

… объясните пожалуйста в чем разница.
bind — создаёт новую функцию с нужным контекстом, call — вызывает текущую с нужным контекстом.
не помешает сослаться на функцию jQuery.proxy, т.к. bind, понятно, не везде работает.
Ну и или просто:
var proxy = function(func, thisObject){
return(function(){
return func.apply(thisObject, arguments);
});
};
Я вот тоже не видел повсеместного употребления bind. Всегда думал что это часть какого-нибудь фрэймворка. Какими конкретно браузерами он поддерживается? Точнее какими версиями IE?
Да bind возвращает новую функцию привязанную к нужному контексту и аргументам, а кол вызывает с фукцию с нужными контекстом и аргументами!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации