代码之家  ›  专栏  ›  技术社区  ›  Mehdi

我们如何在另一个函数中使用一个函数的变量值[重复]

  •  -1
  • Mehdi  · 技术社区  · 2 年前

    举以下例子,为什么 outerScopeVar 在所有情况下都未定义?

    var outerScopeVar;
    
    var img = document.createElement('img');
    img.onload = function() {
        outerScopeVar = this.width;
    };
    img.src = 'lolcat.png';
    alert(outerScopeVar);
    
    var outerScopeVar;
    setTimeout(function() {
        outerScopeVar = 'Hello Asynchronous World!';
    }, 0);
    alert(outerScopeVar);
    
    // Example using some jQuery
    var outerScopeVar;
    $.post('loldog', function(response) {
        outerScopeVar = response;
    });
    alert(outerScopeVar);
    
    // Node.js example
    var outerScopeVar;
    fs.readFile('./catdog.html', function(err, data) {
        outerScopeVar = data;
    });
    console.log(outerScopeVar);
    
    // with promises
    var outerScopeVar;
    myPromise.then(function (response) {
        outerScopeVar = response;
    });
    console.log(outerScopeVar);
    
    // with observables
    var outerScopeVar;
    myObservable.subscribe(function (value) {
        outerScopeVar = value;
    });
    console.log(outerScopeVar);
    
    // geolocation API
    var outerScopeVar;
    navigator.geolocation.getCurrentPosition(function (pos) {
        outerScopeVar = pos;
    });
    console.log(outerScopeVar);
    

    为什么输出 undefined 在所有这些例子中?我不想要变通办法,我想知道 为什么? 这种情况正在发生。


    注: 这是关于 JavaScript异步性 。请随意改进这个问题,并添加更多简化的示例,供社区认同。

    0 回复  |  直到 4 年前