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

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

НЛО прилетело и опубликовало эту надпись здесь
Думаю, формат книги и формат конспекта — разные форматы. На чтение книги нужен не один вечер, и задача её — научить, дать полное и глубокое представление о предмете. Здесь я ставил другую цель — помочь быстро освежить знания об особенностях языка, если вдруг давно не имел с ним дела. Показать, что нужно гуглить, если какой-то пример непонятен. Просмотреть статью можно за минут 8-10, я думаю. С книгой так не получится.
НЛО прилетело и опубликовало эту надпись здесь
Да, это субъективный взгляд на самое главное. Думаете, субъективным точкам зрения на Хабре не место?
НЛО прилетело и опубликовало эту надпись здесь
Стоит отметить, что статья довольно качественная.
Я люблю такие статьи, они, как правило, рассчитаны на новичков. В них всегда чувствуется боль человека, который проходит обучение языку без наставника, самостоятельно. Поэтому я традиционно рекомендую в комментариях:
habrahabr.ru/post/120192/
и
habrahabr.ru/post/124327/
>Диаграмма типов JavaScript выглядит примерно так:

Диаграмма типов JavaScript выглядит примерно как логотип хабра.
причём тот, который помнят только олдфаги, а не эта стилизованная буквочка.
Спасибо за статью! )
Хорошая статья, спасибо! Она не конкурирует, безусловно, с книгами, не пытается заменить Крокфорда. Но ее несомненная и весомая польза в том, что она уменьшает общую энтропию вокруг предмета изучения.
НЛО прилетело и опубликовало эту надпись здесь
Кто-нибудь видел в реальной жизни, числа в строках, начинающиеся с нуля? Да ещё тогда, когда надо применять именно parseInt, а не Number? Благо с внедрением ES5 про эти никому не нужные восьмеричные числа можно забыть.

С восьмеричными числами столкнулся, когда пришлось разбирать дату и время в нестандартном формате. Получилось, что баг воспроизводится только в определённое время (8 или 9 секунд, минут, часов) и не во всех браузерах. Поэтому посчитал не лишним предупредить. Я тоже надеюсь, что скоро наступит время, когда это предупреждение будет ни к чему.

Если это никак не проверить, то откуда информация про передачу строк по ссылке? Да и зачем это здесь, если никаких практических следствий это не несёт?

Хм… Из практических последствий — длинные строки передаются в функцию так же быстро, как короткие. Хотя, сказать по правде, так себе оправдание. Это скорее информация о том, что разработчики браузеров сами позаботились об оптимизации работы со строками, от разработчика ничего не требуется в большинстве случаев. Может быть, и не стоило об этом писать.

Проверять всё же надо на реальных данных, а не на искусственных циклах, которые умный компилятор может и развернуть. И что мы тестируем: компилятор или тип записи уже непонятно.

Согласен. Можно воспринимать как информацию о том, что сделать вывод о том, что быстрее, достаточно сложно, быстродействие зависит и от типа записи, и от интерпретатора и много от чего ещё.

Не понял, что это значит. Может быть разных случая, когда будет undefined.

Спасибо за пример со свойствами. У меня представление об разнице этой тоже скорее интуитивное, чем формальное. Но, по крайней мере, есть закономерность: undefined — для отсутствующих свойств и неинициализированных переменных, null — для конца цепочки прототипов и присвоенных объектов, у которых отсутствует значение. typeof null === 'object', typeof undefined === 'undefined'.
НЛО прилетело и опубликовало эту надпись здесь
быть жадным (должно иметь модификатор g)


В данном случае g обозначает global, а не greedy. Но само понятие «жадные» присутствует в регулярных выражениях. Видимо, вы перепутали.
Спасибо, исправил.
Статья неплохая, много полезного для новичков и даже для уже повидавших js. Но есть несколько косяков.

Строки в качестве аргументов функции передаются по ссылке, а не по значению.

Не верно, все примитивы в js передаются по значению. В статье несколько раз упоминается неверная информация и это плохо…

self executed function

Общепринятое название immediately invoked function expression (IIFE). Раз уж решили писать для новичков, то чтобы они потом не путались в терминологии лучше так.

А ещё недавно появился метод bind, который привязывает функцию к контексту.

Он не просто привязывает функцию к контексту, он создаёт новую функцию с указанным контекстом, в отличие от call и apply.
Спасибо, уточнил спорные моменты.

Не совсем согласен с передачей строк по значению, дело в том, что случае со строками нет никакого способа это проверить, потому что строки неизменяемы. Разве что косвенно — сравнить скорость передачи длинных и коротких строк в функцию и предположить, что передача по значению будет медленнее за счет копирования длинной строки. Получается, нет никаких причин передавать строки по значению, и разработчики JavaScript движков, насколько я знаю, как смогли оптимизировали этот момент. Так что с точки зрения результата выполнения кода правильно будет сказать, что строки неизменяемы, и как передаются — проверить невозможно. А с точки зрения скорости работы — что строки всё-таки передаются по ссылке. По крайней мере, много где об этом пишут, например тут. А сравниваются строки по значению, это конечно.
Не совсем согласен с передачей строк по значению, дело в том, что случае со строками нет никакого способа это проверить, потому что строки неизменяемы.

JS не какой-то странный зверь, которого надо поймать и наблюдать за ним, чтобы понять как он ведёт себя. Это такой же инструмент как и C#, для которого есть документация. Поэтому не нужно ничего «предполагать/проверять/искать причины поведения».
Например, есть отличная статья по стандарту ECMA, в которой объясняется подробно о том как работает всё это в JS (в заключении есть прямая фраза, что примитивы (к которым строки относятся) передаются по значению).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории