Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.12.2011, 00:03
Аспирант
Отправить личное сообщение для Harvey Посмотреть профиль Найти все сообщения от Harvey
 
Регистрация: 19.08.2011
Сообщений: 61

Вывод интерпритации JS-кода
Привет!

Друзья, во-первых, есть и возможность каким-либо образом посмотреть код интерпретации js, то есть код, каким его видит js-интерпретатор.

А во-вторых, возникла проблема с разбором такого кода

var a = 1; 
function b() { 
    a = 10; 
    return; 
    function a() {} 
} 
b(); 
alert(a);


Этот код взят из статьи на хабре Область видимости в JavaScript и «поднятие» переменных и объявлений функций

Я прочитал статью, но все равно четко не могу себе объяснить почему этот код выводит 1, а не что-то другое.

Подскажите пожалуйста по обоим вопросам
Ответить с цитированием
  #2 (permalink)  
Старый 05.12.2011, 00:24
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Harvey
то есть код, каким его видит js-интерпретатор.
Таким же видет как и ты.

Сообщение от Harvey
А во-вторых, возникла проблема с разбором такого кода ...
потому что ты создаешь функцию внутри scope функции "b" поэтому "а" считается локальной.
Ответить с цитированием
  #3 (permalink)  
Старый 05.12.2011, 00:37
Аспирант
Отправить личное сообщение для Harvey Посмотреть профиль Найти все сообщения от Harvey
 
Регистрация: 19.08.2011
Сообщений: 61

Сообщение от devote
потому что ты создаешь функцию внутри scope функции "b" поэтому "а" считается локальной.
Что такое scope-функция?
Ответить с цитированием
  #4 (permalink)  
Старый 05.12.2011, 01:02
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Harvey
Что такое scope-функция?
нет, это не функция, это область видимости... внутри функции существует собственная область видимости. В ней ты создаешь функцию "а" тем самым делаешь переменную "а" локальной, а при вызове функции "b" ты просто переназначаешь значение локальной "а"
Ответить с цитированием
  #5 (permalink)  
Старый 05.12.2011, 01:06
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

var a = 1;  
function b() {  
    alert( typeof a );
    return;  
    function a() {}  
}  
b();  
alert(a);
Ответить с цитированием
  #6 (permalink)  
Старый 05.12.2011, 10:08
Аспирант
Отправить личное сообщение для Harvey Посмотреть профиль Найти все сообщения от Harvey
 
Регистрация: 19.08.2011
Сообщений: 61

Спасибо, я разобрался. Но вот еще вопрос. Мне не совсем ясно как именно здесь работает return, какая роль у этой функции в данном примере?
Ответить с цитированием
  #7 (permalink)  
Старый 05.12.2011, 10:21
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Harvey
Мне не совсем ясно как именно здесь работает return, какая роль у этой функции в данном примере?
Обычный выход из функции, ретурн можно ставить в любой части кода, это нормальная практика возвращаться рано или поздно в зависимости от условий.
Ответить с цитированием
  #8 (permalink)  
Старый 05.12.2011, 10:33
Аспирант
Отправить личное сообщение для Harvey Посмотреть профиль Найти все сообщения от Harvey
 
Регистрация: 19.08.2011
Сообщений: 61

А как тогда выполняется вложенная функция a(), если return стоит перед ней
Ответить с цитированием
  #9 (permalink)  
Старый 05.12.2011, 10:45
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

она инициализируется до вызова функции b, во время первого прохода интерпретатора.
Ответить с цитированием
  #10 (permalink)  
Старый 05.12.2011, 10:48
Аспирант
Отправить личное сообщение для Harvey Посмотреть профиль Найти все сообщения от Harvey
 
Регистрация: 19.08.2011
Сообщений: 61

ого, спасибо большое!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу приличный редактор кода под JS Universe Общие вопросы Javascript 28 30.10.2012 18:30
Вывод кусков HTML кода с одного файла JS wlad2 Общие вопросы Javascript 16 04.01.2011 11:52
Рациональность JS кода. Илюшенций Общие вопросы Javascript 3 25.08.2010 13:02
Вывод JS значения в одну строку в HTML velo Общие вопросы Javascript 7 15.12.2009 03:57
Загрузка дополнительного js кода с сервера Anonymous2008 Общие вопросы Javascript 5 20.11.2008 12:33