За что вы любите Javascript?
"Чтобы что то делать надо это любить или ненавидеть"(с)
Чтобы годами делать "как бы" одно и то же (писать код на объектно-ориентированных императивных языках программирования) определённо нужно иметь интерес к выполняемой работе. Вопрос в названии темы. P.s. меня пока что привлекает магия, что многие сложные задачи можно сделать только из сочетания function и {}. Мне это напоминает одну из лучших (по простоте правил, ибо мне лень учить много правил и поэтому я не играю в доту) игр: https://ru.wikipedia.org/wiki/Жизнь_(игра) |
Цитата:
По сабжу. Я люблю JS за динамику. Он не так динамичен, как Ъ, но не скатился пока до уровня жаба/++. Впрочем, скатывается потихоньку, к сожалению. Была бы моя воля, я бы не учил JS, есть несколько языков, которые его наголову превосходят, для души они милей. Но он очень распространен сейчас, без него никуда. Во всяком случае, это далеко не худший язык из попсовых, один из лучших. |
Цитата:
var name = ""; var user = { name: "Василий", export: function() { return { value: this }; } }; alert( user.export().value.name ); |
Цитата:
|
Цитата:
;(function(){ // some code return result; }()); Просто я как ребёнок смотрю на всё это. Понимаете? Для меня почти каждый вопрос в https://learn.javascript.ru/quiz/js-basic сложен, ибо мне многое непонятно. И хотя я 90% вопрос уже видел по 3-5+ раз я по-прежнему прохожу эти тесты обычно на 70-80%... |
Цитата:
Цитата:
На самом деле, это тема лексических замыканий. Она довольно забубеннная. Ключ к пониманию тут лежит в подковерной возне интерпретатора. При создании любой функции, создается подковерный объект, неймспейс, с котором дефолтно связываются переменные, внутри ф-ций. Если хотите понять это в деталях, лучше не читайте статейки в интернете, почитайте о них в серьезной литературе. Они не сложны, сами по себе, они сложны для понимания именно потому, что тут неявные действия со стороны интерпретатора. Вы не правы, что без этого нельзя обойтись, вполне можно. любое замыкание -- это по-сути, не более чем функция+окружение. Поэтому f=function(){ var x=1 return function(){alert(x)} }() //то же самое, что o={ x: 1, f: function(){alert(this.x)} } f() o.f() за исключением инкапсуляции(в плохом смысле). |
Цитата:
|
рони,
Да, исправил, спасибо. |
Цитата:
|
Rise,
Если вопрос, почему, то ответ -- потому что ваша функция вызвана вне контекста о. А первую f вы затерли вторым присваиванием |
Часовой пояс GMT +3, время: 23:53. |