2013-10-12 4 views
0

Я думал, что понял переменную область видимости, но мне кажется, что мне еще нужно узнать еще кое-что.Почему переменная область недоступна в этом примере

У меня есть установки, как это:

function start() { 

    var playerLocation = world001map; 
    var doggy = 'wooof!'; 

    function loadLevel(levelToLoad) { 
     levelToLoad(); 

     loadLevel(playerLocation); 
    } 
} 



function world001map() { 
    alert(doggy); 
} 

Похоже, я не могу получить доступ к переменной собачий из функции world001map. Я думал, что детские функции всегда могут обращаться к переменным их родителей.

Почему я не могу получить доступ к «собачке» из «world001map», и есть ли способ исправить ситуацию?

+1

Посмотрите на свои фигурные скобки - я думаю, что ваши брюки падают вниз (т.е. 3 открытых, 2 закрытых) –

+3

Также правильный отступ поможет вам здесь –

+0

Исправлены брекеты, извините, что это была ошибка, которую я сделал при снятии кода с ненужных вещи. –

ответ

0

да, собачка изолирована к стартовой области.

два способа исправить: проход собачий к world001map:

function world001map(doggy) 

2, делают собачий глобальные, установить его вне функции запуска.

+0

Принимая этот ответ, потому что он показал способ избежать использования глобальной области. –

1

Область применения определяется тем, где определена функция (то есть позиция в коде объявления функции или выражение функции), а не там, где она копируется.

var playerLocation = world001map не дает world001map доступа к переменным, которые контекстным к start

Смежные вопросы