[英]javascript executed in the wrong order
在Chrome控制台中,似乎第二行在第一行之前執行。 為什么?
function fn(obj){
console.log(obj);
obj.a = 1;
}
fn({b:1}); // prints {a:1, b:1} in console! WHAT!!!
fn({}); // prints {}. OMG. WHAT. This is inconsistent with above behaviour!
這不會發生在Edge控制台中。
您正在將對象記錄到控制台。 無論您記錄什么,都是對實際對象的引用。 由於您更新了對象,因此引用將反映最新值。
要進行測試,您可以在設置它的值之前嘗試記錄obj.a.
它似乎是Chrome devtools控制台的一個bug功能。 例如,如果您運行此代碼段,您將獲得
{
"b": 1
}
但是,如果您同時打開Chrome控制台,您將獲得以下內容:
{b: 1}
a:1
b:1
正如您所看到的,第一行反映了記錄時的obj
狀態,但是當您單擊它時,它的內容似乎會更新。
在記錄對象右側還有一個藍色信息工具提示,上面寫着:“下面的值剛剛評估過了”,確認這是一個功能,而不是一個bug。
function fn(obj){ console.log(obj); obj.a = 1; } fn({b:1});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.