为什么变量范围在本例中不可用

Why is variable scope not available in this example

本文关键字:变量 范围 为什么      更新时间:2023-09-26

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

我有这样的设置:

function start() {
    var playerLocation = world001map;
    var doggy = 'wooof!';
    function loadLevel(levelToLoad) {
        levelToLoad();
        loadLevel(playerLocation);
    }
}

function world001map() {
    alert(doggy);
}

似乎我无法从 world001map 函数访问狗变量。我认为子函数总是可以访问其父函数的变量。

为什么我不能从"world001map"访问"狗狗",有什么方法可以解决这个问题吗?

作用域由函数的定义位置(即函数声明或函数表达式在代码中的位置)决定,而不是复制到何处。

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

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

两种解决方法:将狗狗传递到 World001map:

function world001map(doggy)

2、使狗狗全局,设置它之外的启动功能。