0

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

我有这样的设置:

function start() {

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

    function loadLevel(levelToLoad) {
        levelToLoad();

        loadLevel(playerLocation);
    }
}



function world001map() {
    alert(doggy);
}

似乎我无法从 world001map 函数访问 doggy 变量。我认为子函数总是可以访问他们父母的变量。

为什么我不能从“world001map”访问“doggy”,有什么办法可以解决这个问题吗?

4

2 回答 2

1

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

var playerLocation = world001map不授予world001map对范围为的变量的访问权限start

于 2013-10-12T22:22:32.063 回答
0

是的,doggy 被隔离在起始范围内。

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

function world001map(doggy)

2、make doggy global,在start函数外设置。

于 2013-10-12T22:23:00.847 回答