Отправлено alexvera5152 от ср, 04/19/2017 - 18:45
JavaScript Начала

 http://spbmapo.org/node/103 Вторая страница.

learnJS

JavaScript Начала

<script type="application/javascript">
         alert('Hello, World!');
      </script>

https://learn.javascript.ru/browser-environment Ребята дошел до "Методы объектов и контекст вызова", дальше ООП начинается. Стоит на первых порах дальше читать или можно ко второй главе переходить. Эта глава "Документ, события, интерфейсы" сильно зависит от ООП? Мне JS нужен для сайтов, а не для серьезного программирования.

у меня такая же ситуация, сейчас на 53 уроке по js, и понимаю, что продолжение уводит меня от изучения js для верстки) уж больно всем там сложно. Поэтому решил пока переключиться на DOM, а там уже посмотрю)

У меня не работает:

<html>
<script>
//window.open('http://ya.ru');
document.body.style.background = 'red';
alert( 'Элемент BODY стал красным, а сейчас обратно вернётся' );
document.body.style.background = '';
</script>
</html>

чИТАТЬ ДНЁМ И НОЧЬЮ. зИМОЙ И ЛЕТОМ УЧИТЬ И УЧИТЬ. JavaScript.

https://toster.ru/q/319479

Как работает интерпретатор javascript на пальцах?

Здравствуйте.
Для меня джаваскрипт - это один большой вопрос. Мне не понятно, как это все работает. В книгах очень много не договаривают. В книгах пишут о том, что джаваскрипт состоит из DOM, BOM , JavaScript. Что BOM - это система "готовых" объектов для работы с окном. Что DOM (лежит внутри BOM ) - это также система "готовых" объектов, но уже для работы с документом. Понятно только то, что BOM содержит DOM. Еще можно как-то представить объект window, как большую коробку, внутри которой много коробок, одна из которых называется DOM. Больше в книгах я ничего не нашел. А JavaScript как к ним примыкает? Пишется "джаваскрипт - это прослойка между BOM и DOM ". Не понимаю смысл слова "прослойка". Джаваскрипт в воздухе висеть просто не может, должна быть какая-то точка отсчета, какое-то "место крепления" языка джаваскрипт ко всей браузерной объектной модели. Плюс, весь джаваскрипт язык (а он наверно, огромный) же не запихивается в каждый объект window, память надо экономить. Получается, в документе встречаются "слова" языка джаваскрипт , а интерпретатор в заглядывает в сам "словарь" по языку джаваскрипт (который "где-то" в другом месте лежит), чтобы понять, что за "ключевое слово" переди ним.
Не понимаю, как работает интерпретатор. Одни догадки у меня только. Интрерпретатор не может "знать" джаваскрипт, ведь интерпретатор - это не человек. Получается, язык программирования джаваскрипт "где-то" лежит, интерпретатор его не знает и постоянно "туда" подглядывает, чтобы узнать "а что же значит конкретное ключевое слово". Аналогию можно придумать такую: человек не знает английский (этот человек- интерпретатор), читает текст и переводит (это мой документ), постоянно подглядывает в книгу по английскому и словарь (это место непонятное, где вся джавакриптовая база лежит), чтобы понять, что значит конкретное слово (ключевое слово) или предложение (инструкция). Я не знаю, правильная это аналогия или нет - другой не придумал. Интерпретатор - это тупо исполнитель кода. Он читает по строкам код, находит ключевые слова и заглядывает "куда-то в другое место, где сам язык описан" (в библиотеку какую-то или что-то похожее), чтобы прочитать, а что это за ключевое слово и что с ним делать? А что это за место "куда-то в другое место, где сам язык описан"? Ведь не будет же (аналогия), словарь английского прикрепляться к каждому тексту по английскому, словарей не напасешься, логичней было бы словарь "в стороне" держать и, когда надо, посматривать в него.
С HTML, CSS тот же вопрос. Интерпретатор тоже ведь читает документ сверху вниз и слева направо в поиске ключевых слов, потом заглядывает опять же "куда-то", чтобы понять, а что за ключевое слово перед ним и что с ним делать.
Столько много написал я потому, что не понимаю, как точно сформулировать вопрос. Потому что понимания полного нет. А когда не получается мысль оформить, приходится изворачиваться - аналогии придумывать, чтобы другие поняли, что ты хочешь.
В общем, вопросов больше, чем ответов. Буду благодарен, если кто-то мне объяснит на пальцах что к чему. Как говорят на w3cschools,
The Browser Object Model (BOM) allows JavaScript to "talk to" the browser.
sfi0zy

Ivan Bogachev  https://toster.ru/q/319479

UI Developer
Это такой мягкий намек на то, что вообще-то говоря Javascript может жить и вне браузера - на ум сразу приходит nodejs: там у вас изначально есть только консоль - ни о какой работе с HTML или браузером речи не идет. Можно сказать, что браузер предоставляет нам эдакое "дополнение" к тому, что знает интерпретатор о языке на момент исполнения кода. Реализаций интерпретаторов, разумеется, больше одной - если интересно какие сейчас в моде - можно посмотреть на википедии. Собственно в самом интерпретаторе и заложено то, что вы назвали "местом, где язык описан". А "описан" он там в соответствии со стандартом языка.

Сам по себе Javascript (диалект ECMAScript) - достаточно сложный язык, его врят ли получится исполнять "читая строки по порядку" (вспомним хотя бы "поднятие" переменных), поэтому интерпретируется он несколько сложнее, чем кажется. Очень не лишним будет посмотреть вот такой парсер. И вдвойне не лишним будет познакомиться с LISP перед тем как погружаться в дебри интерпретации (это покажется странным, по практически все идеи, которые сейчас используются в Javascript, были уже очень и очень давно и там, где вы их меньше всего ожидали увидеть. Да и мозг заметно вправляет такое знакомство). На хабре люди не раз уже писали свои интерпретаторы для разных языков, так что начало для понимания внутренней кухни там можно получить.

Возвращаясь к теме - если после ознакомления с вышеупомянутым парсером (который строит синтаксическое дерево) вы посмотрите на ваши BOM/DOM свежим взглядом, то заметите, что в то самое "дерево всего, что есть" браузер добавляет "дерево DOM" и "дерево BOM" с которыми вы, разумеется, можете работать - в коде они будут соответствовать объектам document и window. (звучит, конечно, немного грубо - но вы сами просили на пальцах). Для того, чтобы в этом убедиться, можно воспользоваться инструкцией по построению синтаксического дерева для Javascript
 
 

Теги

Comments