簡體   English   中英

對console.log的連續調用會產生不一致的結果

[英]Consecutive calls to console.log produce inconsistent results

好吧,我完全被這個目瞪口呆。 (我可能會忽略一些明顯但......)

我連續2次調用console.log。 他們之間沒有別的東西

console.log($state);
console.log($state.current);

這是生成結果的圖像

Console.log截圖

為什么2會產生不同的“當前”物體? 怎么會發生這種情況?


語境:

這些調用是在解析路由依賴關系時在ajax調用中進行的。 如果您需要更多代碼或上下文,請告訴我們。

在Chrome和Firefox中確認了同樣的問題

Ajax調用和包裝函數(無論如何都沒有修改)

normaCtrl.publicNorma = ['$http', '$state', '$stateParams', 'baseUrl', function ($http, $state, $stateParams, baseUrl)
{
    var id = $stateParams.id;
    return $http.get(baseUrl + "api/public/norma/" + id).then(
        function (response) {
            console.log($state);
            console.log($state.current);
            console.log($state.current.title);
            return response.data;
        }
    );
}];

可能的相關問題

嗯,這是那些偶然發現的人的答案。

簡答

Console.log在最后的執行狀態下顯示深度可變對象,而不是在調用console.log時的狀態

更多細節

基本上,當使用可變深度對象時,Console.log存儲對所述對象的引用,而不是存儲對象克隆。

由於存儲和可視化之間存在時間差,因此當您單擊箭頭進行進一步檢查時,您所看到的實際上是對象的當前狀態,而不是調用console.log時對象的狀態

始終確保使用“對象快照”的一種方法是調用Json.stringify或在可用時使用console.dir

奇怪的。 它是一個ECMA 5對象有一個奇怪的吸氣劑? 普通的$ state調用仍然沒有意義。 我認為你的GC不僅僅有一些問題......

你確定這些是被記錄的電話嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM