繁体   English   中英

为什么console.log在分配之前会记录一个值?

[英]Why does console.log log a value before it's assigned?

一个简短的例子:

self.curTabs = null;

$j.getJSON(url)
    .done(function (response) {
        self.curTabs = response.tabs;

        _.each(self.curTabs, function (tab) {
            tab.dataLoaded = true;
        });

        console.log(self.curTabs);
    });

逻辑输出: [ 0: Object { dataLoaded: true, etc... }, 1: etc... ]

但是这个例子:

self.curTabs = null;

$j.getJSON(url)
    .done(function (response) {
        self.curTabs = response.tabs;

        _.each(self.curTabs, function (tab) {
            tab.dataLoaded = true;
        });

        console.log(self.curTabs);

        _.each(self.curTabs, function (tab) {
            tab.dataLoaded = false;
        });
    });

不合逻辑的输出: [ 0: Object { dataLoaded: false, etc... }, 1: etc... ]

为什么变量在赋值之前得到的值为false

因为console.log在每个实现中都不是同步的。 这样它排队直到主线完成。 在此期间,您的新值已设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM