Comments 34
Неплохая статья для новичков :)
+1
Вы пропустили много точек с запятыми в своём коде…
+3
спасибо, исправлено;
+2
как по мне; в javascript не нужны
-19
Это относительно, в некоторых ситуациях в устаревших браузерах (читай как IE) код может быть интерпретирован не верно. А так конечно, дело вкуса
+2
Возможно я чего-то не знаю, начал более тесное общение с JS совсем недавно, но во всех учебных материалах говориться, что необходимо ставить; везде, чтобы механизм автоматического разделения участков кода не создал вам странный неуловимый баг.
Более того код вы будете сжимать, что в последствии тоже даст баги и всё-равно вам придётся её поставить.
Более того код вы будете сжимать, что в последствии тоже даст баги и всё-равно вам придётся её поставить.
+4
ну нормальный обфускаторы ставят все сами, но да, лучше обезопасить себя
+1
yuicompressor не нормальный обфускатор? Вроде бы, один из основных, однако пару раз заставил меня поставить; и убрать debugger;-ы
0
Это в идеальном случае, но мало ли какой код вы напишите и как сработает обфускатор. И за те 30-минут, что вы фиксили баг можно поставить море точек с запятыми.
+1
github.com/twitter/bootstrap/blob/master/js/bootstrap-alerts.js а пацаны и не знают… старые браузеры, обфускаторы ломающие код, какие еще предрассудки вас тревожат?
-2
100 строк кода? их даже в perl-стиле написать можно. Непонятно, почему они сам факт поддержки transition проверяют при помощи feature detection, а вот саму функцию выбирают уже при помощи проверки user-agent. Код, в общем, хорош, но это не значит, что надо из него брать порочную практику глотать знаки разделения. В русском языке тоже можно без точек с запятыми писать.
+1
огромное человеческое спасибо за статью!
на самом деле многое прояснилось
на самом деле многое прояснилось
+2
Спасибо, было интересно почитать
0
А ну-ка, новички, задания для самоконтроля: что выведут 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]();
0
первый ничего не выведет. ;)
+4
Сорри, в первом не хватает в конце вызова функции test();
0
интересно почему во втором варианте после for а в переменной i остается 10
0
Да первый тест не много не в тему, хотя может это тут тоже нужно было раскрыть, но я видел на хабре уже топики, где это раскрывалась.
Вся суть в том, что объявление функций самая приоритетная функция и вот такой код:
будет для не посвященных очень странно работать :)
Вся суть в том, что объявление функций самая приоритетная функция и вот такой код:
function test() {
function supertest() {
alert('NIKOGDA NE POKAJETSYA');
}
return supertest;
function supertest() {
alert('A ETA POKAJETSYA');
}
}
var a = test();
a() // A ETA POKAJETSYA!
будет для не посвященных очень странно работать :)
0
первый ничего не выведет. ;)
0
Спасибо, интересная статья.
Если не ошибаюсь, везде по тексту, кроме первого вхождения (так же просто) «также» пишется слитно. «Небольшой» (конструктор) тоже без пробела. Мелочь, а отвлекает.
Если не ошибаюсь, везде по тексту, кроме первого вхождения (так же просто) «также» пишется слитно. «Небольшой» (конструктор) тоже без пробела. Мелочь, а отвлекает.
0
Я с Ваших слов не понял чем отличаются
Function.bind
Function.call
… объясните пожалуйста в чем разница.
Function.bind
Function.call
… объясните пожалуйста в чем разница.
0
bind — создаёт новую функцию с нужным контекстом, call — вызывает текущую с нужным контекстом.
+2
не помешает сослаться на функцию jQuery.proxy, т.к. bind, понятно, не везде работает.
Ну и или просто:
var proxy = function(func, thisObject){
return(function(){
return func.apply(thisObject, arguments);
});
};
Ну и или просто:
var proxy = function(func, thisObject){
return(function(){
return func.apply(thisObject, arguments);
});
};
0
Я вот тоже не видел повсеместного употребления bind. Всегда думал что это часть какого-нибудь фрэймворка. Какими конкретно браузерами он поддерживается? Точнее какими версиями IE?
0
developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind
Firefox (Gecko) Chrome Internet Explorer Opera Safari
4 7 9 11.60 --
Firefox (Gecko) Chrome Internet Explorer Opera Safari
4 7 9 11.60 --
0
Да bind возвращает новую функцию привязанную к нужному контексту и аргументам, а кол вызывает с фукцию с нужными контекстом и аргументами!
0
Sign up to leave a comment.
Попытка просто объяснить сложные, для новичков, вещи в javascript