Вы помните, когда изучали JavaScript? В какой момент вы внезапно "получили это"? (Например, мой CSS-ха-момент был, когда я узнал о блочной модели ...)
Причина, по которой я спрашиваю, состоит в том, что я изучаю JS в течение 6 недель, но я все еще нахожу это довольно запутанным. Вот цитата из того, что я недавно читал на SO:
«..функции действуют аналогично значениям, так как метод - это свойство объекта, имеющего значение функции (которая также является объектом)».
Мне любопытно, если вы тоже были смущены в начале и что заставило вас понять это.
(Я читаю Sitepoints «Просто JavaScript», книгу «Eloquent JavaScript» и следую учебному пособию Линды по Essential JavaScript. У меня нет опыта программирования, и я ужасно разбирался в математике;)
Благодарность!
Ответы:
Я думаю, что самый большой момент «АГА» для меня был, когда я полностью осознал следующее:
Значения переменных могут быть любыми, включая функции
источник
Для меня это было, когда я понял, что контекст (что
this
указывает на) функции может быть изменен произвольноhttp://www.digital-web.com/articles/scope_in_javascript/
источник
Я согласен с тем, что затронули некоторые другие ответы; Момент А-ха для меня был, когда я понял, что такое закрытие .
Я разместил ответ на вопрос Что такое закрытие? чтобы помочь объяснить это.
Без понимания замыканий Javascript является довольно ограниченным языком с несколькими приятными сокращенными синтаксическими функциями, такими как
[]
для массивов и JSON ({}
для объектов), а также в контексте браузера, DOM (window
/document
).Однако, как только вы поймете замыкания, много понимания станет на свои места :
Ресурсы
источник
Я думаю, что самый важный язык «Ага для меня в Javascript были
По всем этим темам вы должны найти множество ресурсов в Интернете.
(И не думаю , что все будет совершенно логично: JavaScript в заблуждение)
источник
Мне было трудно работать с javascript, когда я впервые начал изучать его несколько лет назад, потому что я впервые начал изучать веб-разработку с серверной стороны (php и perl).
Это было не столько синтаксисом или ООП, ни чем-то, что ускользало от меня, тем более живой и управляемой событиями javascript - переходя от «делай это, это и это и это, и обслуживай это, и ты готов», чтобы сделать это и это, и это, и затем мы находимся в постоянном состоянии ожидания чего-то, что произойдет, и ответа, пока пользователь не покинет страницу ». Это действительно бросило меня в тупик.
Я не думаю, что могу назвать что-то конкретное, что действительно заставило бы его погрузиться (без определенного момента «ага!» - если бы мне пришлось назвать конкретный момент, я бы сказал, когда я изучал AJAX для сценария с поисковыми предложениями, но IMO это просто произвольно) но когда я в конце концов понял разницу, все стало намного проще оттуда :)
источник
Когда я, наконец, понял, что могу переопределить любую часть языка в любую хрень, какую захочу. В этом отношении он даже более мощный, чем C. Например, если мне не нравится стандартная
toString()
функция, я реализую свою собственную:источник
Когда я понял, что вы можете установить свойство для объекта функции.
Также, когда я наконец понял, что это за прототип.
источник
И момент а-ха, когда вы наконец поймаете эти результаты.
источник
Еще один момент для меня: Понимание того, что язык JavaScript отличается от своего основного использования: динамического HTML и веб-программирования на стороне клиента. Я был бы разочарован JavaScript, когда я действительно был разочарован несовместимостью DOM и браузера.
Ага момент №2: Понимание того, что наследование может быть выполнено разными способами. Типичное наследование на основе классов только одно. Есть и другие, а именно на основе прототипов (стиль, используемый в JavaScript).
Что касается № 1, я не могу не рекомендовать JavaScript: хорошие части . Он рассматривает JavaScript как прекрасный язык сам по себе.
источник
Нет блока обзора и подъема.
источник
Это просто схема с синтаксисом.
Это было большим для меня.
источник
JQuery был для меня моментом «а-ха». Синтаксис показался мне знакомым после большого опыта работы с синтаксисом LINQ / lambda в C #.
источник