nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 05:57



Reply to topic  [ 20 posts ]  Go to page Previous  1, 2
JavaScript 
Author Message
Doomed

Joined: 18 Feb 2007 11:40
Posts: 408
Reply with quote
Post 
return возвращает тело функции просто как данные, потому что не происходит вызова функции. Функция не запустилась -> данные не обработались -> вернулось тело функции.
Переменная b не видна "снаружи" функции a(). Поэтому получить к ней доступ, тем способом, как ты хочешь, не удастся. Попробуй возвращать не просто результат безымянной функции, а массив всех переменных (если они так нужны) и результатов выполнения вложенных именованных функций.


07 Mar 2012 04:21
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Different wrote:
return возвращает тело функции просто как данные, потому что не происходит вызова функции. Функция не запустилась -> данные не обработались -> вернулось тело функции.
Переменная b не видна "снаружи" функции a(). Поэтому получить к ней доступ, тем способом, как ты хочешь, не удастся. Попробуй возвращать не просто результат безымянной функции, а массив всех переменных (если они так нужны) и результатов выполнения вложенных именованных функций.


интересно получается - переменная не видна, но тем не менее имеет значение и при вызове возвращённой функции всё работает как надо

_________________
:dj: https://mastodon.social/@Shaos


07 Mar 2012 11:02
Profile WWW
Doomed

Joined: 18 Feb 2007 11:40
Posts: 408
Reply with quote
Post 
Shaos wrote:
интересно получается - переменная не видна, но тем не менее имеет значение и при вызове возвращённой функции всё работает как надо

В JavaScript большое значение имеют области видимости переменных.
http://habrahabr.ru/blogs/javascript/127482/


11 Mar 2012 02:42
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Different wrote:
Shaos wrote:
интересно получается - переменная не видна, но тем не менее имеет значение и при вызове возвращённой функции всё работает как надо

В JavaScript большое значение имеют области видимости переменных.
http://habrahabr.ru/blogs/javascript/127482/


Ну ок - переменная существует в пределах функции, а не блока, однако в моём примере функция в которой существует переменная b уже не существует - мы уже получили из неё управление, выдав наружу другую функцию, внутри которой эта переменная b применена, и судя по всему уже имеет значение, которое поменять невозможно, т.е. по сути b превращается из переменной в константу...

_________________
:dj: https://mastodon.social/@Shaos


11 Mar 2012 18:39
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Задумал я тут сделать интерпретатор своей виртуальной машины и подумалось мне, что делать одну гигантскую функцию с большим свичом, интерпретирующим байткод - это скушно. Поначалу я хотел завести массив функций-обработчиков разных инструкций, но потом меня осенило - вместо этого надо сделать ШИТЫЙ КОД! :)

То есть идея такая - программа на JavaScript подтягивает массив кодов и перед запуском интерпретатора делает его предварительную обработку - а имеено строит такой же массив, но в ячейках массива сидят не числовые коды, а указатели на функции, которые СГЕНЕРИРОВАНЫ программно и "скомпилены" через eval ;)

В результате интерпретатор упрощается до невозможности:
Code:
setInterval(function(){codf[pc];},0); // codf - array of functions, pc - program counter (modified in functions)


Всё :roll:

P.S. Аналогичный подход может быть применён для эмуляторов процессоров, например того же 8080, но при условии, что эмулируемый код не будет самомодифицирующимся (хотя и это решаемо).

P.P.S. Провёл небольшой эксперимент - похоже вызов функций из массива действительно несколько быстрее большого свича...

_________________
:dj: https://mastodon.social/@Shaos


10 Dec 2012 15:13
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 20 posts ]  Go to page Previous  1, 2

Who is online

Users browsing this forum: No registered users and 16 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.