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

JSON.stringify不向输出中的对象添加新添加的属性[duplicate]

  •  0
  • Labeo  · 技术社区  · 7 年前

    给出下面的例子,为什么 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);
    

    // geolocation API
    var outerScopeVar;
    navigator.geolocation.getCurrentPosition(function (pos) {
        outerScopeVar = pos;
    });
    console.log(outerScopeVar);
    

    为什么会输出 undefined 为什么? 这种情况正在发生。


    注: 这是一个典型的问题 JavaScript异步性

    0 回复  |  直到 8 年前