А как же работает наш любимый JS.
Всем доброго времени суток. Подскажите пожалуйста, ( а лучше поделитесь ссылкой) как JS обрабатывает код. Меня интересуют потоки обработки файла.
|
Либо может знаете как этот процесс называется?) и с ноовыми силами долбить гугл)
|
Цитата:
|
Возможно не корректно выразился, но к примеру когда происходит баблинг переменных. Сам процесс, с самого начала когда мы запустили браузер и попросили выполнить его JS файл, с чего начинается весь процесс.
|
melky,
имеется в виду, как интерпретатор код обрабатывает. |
сначала идет интерпретация JS в современных браузерах JS переводится в промежуточный байт код боле понятный для компьютера на основании полученного кода проводится его анализ и оптимазация ( спасибо браузерным войнам) затем код встраивается в глобальный скоп (это такой специальный объект в котором сохраняются именна=ссылки на переменные строятся хеш таблицы) после этого запускается компиляция в нативный код системы после этого код запускается на выполнение как нативный код текущей системы
|
Зависит от VM, т.к. реализаций JS много и они работают по разному, например Nashorn транслирует код в байт код JVM, а другие VM могут компилить код сразу в машинный, минуя байт код. Также может зависит от режима работы VM и т.д.
Примерная схема такова: 1) Парсинг исходного кода; 2) Генерация байт кода или непосредственная компиляция в машинный код; 3) В VM, которые используют JIT часто используемый байткод комплится в машинный. Вообще VM может поступать как посчитает нужным, т.к. это никаким стандартом не контролируется, поэтому может статься, что принципы работы у того же SpiderMonkey и V8 сильно отличаются, в общем нужно разбираться конкретно. |
Для тех кому интересно = ) ссылка на материал по моему вопросу. Думаю полезно знать каждому.
|
Цитата:
Только следует заметить, что в статье по ссылке описан стандарт ES3, а сейчас ES5.1 и готовится ES6, а там многое сделано иначе, но у Сошникова есть статьи и про актуальные стандарты. |
kobezzza,
да, блог один из наигоднейших, что я читал. |
kobezzza,
А вам не кажется, что этот ваш "классик", внезапно, путает function declaration с function expression? |
kobezzza,
Да и вообще, эти его заклинания, "вход в контекст", как-то вызывает сомнение в том, что он понимает о чем говорит. Никакого входа нет, есть связывание. |
petya, нашёл ошибку - напиши автору, а пока ты похож на очередного "умника", а таких здесь не любят.
|
kobezzza,
А, тут у вас секта? Тогда понятно. |
kobezzza,
Да и вообще, строго говоря, это не ошибка, а неверные рассуждения исходящие из превратного понимания. Такие вещи приводят не к ошибкам, а к неверной интерпретации. Если указывать на "ошибку", следовало бы написать "чувак, зачем ты говоришь о том, в чем не разбираешься?". Так ему написать Вы предлагаете? |
Цитата:
Дмитрий Сошников один из самых известный в России JS прогеров, рецензор многих книг O'Really по JS, его блог переведён на хренову тучу языков и я склонен думать, что это ты не разбираешься в теме, но все мы люди и можем ошибаться, поэтому ты напиши, или признай что не прав. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
http://dmitrysoshnikov.com/ecmascrip...koda-konteksta Цитата:
Цитата:
|
Для справки: контекст исполнения, объект переменных и т.д. определён в стандарте ECMAScript3, а в версии ECMAScript5 был заменён на окружения, и в статье по ссылке описывается именно ECMAScript3. По сути статья является абстрактным описанием стандарта в удобном для чтения виде. Причём статья называется именно "Тонкости ECMAScript" т.е. вполне конкретное описание стандарта языка, а не реализаций самой VM, коих для JS over9000 и работать они могут по разному.
|
Цитата:
|
Цитата:
|
Цитата:
|
kobezzza,
Я не рассматриваю вопросы терминологии тут вообще. Я говорю о превратном понимании автором процесса исполнения програмы. Он трактует стандарт по своему, якобы, проясняя что-то, но трактовка эта не верна. |
Цитата:
Цитата:
Цитата:
*** Цитата:
|
kobezzza,
Там говорится о входе в функцию, а не входе в окружение. Я против этого ничего не имею |
kobezzza,
Хотя да, вот это: Следующие шаги выполняются, когда управление входит в контекст исполнения кода функции, который содержится в объекте функции F, значения thisArg и argumentsList передаются при вызове: Достаточно неоднозначно, забубенно, я бы сказал. Возможно, косяки перевода. Правильным определением было бы, что-то вроде: После входа в функцию происходит разрешение имен, в соответствии с окружением и правилами связывания. Рассматриваем исключительно семантику, разумеется. |
petya, я всего лишь призываю к объективизму. Блог Сошникова, как и этот сайт один из столпов общепризнанной документации JS и стандарта ES и если ты считаешь, что автор не прав и можешь это доказать (ссылки на спеку и т.д.), то напиши ему с этими замечаниями, а не начинай кидаться какашками с умным видом. Неужели это так сложно?
|
kobezzza, не трать время, это все тот же унылый foo/govnocoder/nanaets/newobject
|
Часовой пояс GMT +3, время: 02:14. |