为什么此示例中的变量范围不可用

时间:2013-10-12 22:19:31

标签: javascript

我认为我理解变量范围,但似乎我还需要学习更多。

我有这样的设置:

function start() {

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

    function loadLevel(levelToLoad) {
        levelToLoad();

        loadLevel(playerLocation);
    }
}



function world001map() {
    alert(doggy);
}

好像我无法从world001map函数访问doggy变量。我认为子函数总是可以访问父母的变量。

为什么我不能从“world001map”访问“doggy”并且有什么方法可以解决这个问题?

2 个答案:

答案 0 :(得分:1)

范围取决于函数定义的位置(即函数声明或函数表达式的代码中的位置),而不是复制到的位置。

var playerLocation = world001map不允许world001map访问范围为start的变量

答案 1 :(得分:0)

是的,狗狗被隔离到起始范围。

两种修复方法:将狗狗传递给world001map:

function world001map(doggy)

2,使狗狗全局化,在启动功能之外进行设置。