为什么Chrome会在不同时间以不同方式记录对象?

时间:2016-05-09 12:30:25

标签: javascript google-analytics-api console.log google-api-js-client

我正在尝试通过Angular使用Google AnalyticsAPI。我先加载分析脚本

<script src="https://apis.google.com/js/client.js"></script>

然后我console.log api脚本创建的全局gapi变量。这将返回我期望的对象,具有auth属性。但gapi.auth显示为undefined

当我使该功能等待两秒钟虽然它按预期运行时。这说明了会发生什么:

enter image description here

然而,即使在第一个对象中,所有属性都存在:

enter image description here

为什么后一个有预览而前一个没有预览?我想象这与为什么我只能在2秒后访问他们的属性有关。

更新:

我已经在我的脚本顶部添加了此检查器,以等待gapi.auth加载...但它永远不会完成:

while (gapi.auth === undefined) {
    console.log("Still undefined");
}
console.log(loaded now");

enter image description here

1 个答案:

答案 0 :(得分:0)

console.log函数不会立即评估作为参数给出的对象。仅在日志窗口中查看或展开对象时才会对其进行评估。因此,如果您的对象在时间上改变了它的属性。首次打开日志并尝试展开对象时,您将看到对象的快照。这就是为什么当你太早打开它时,你会看到一个空物体。