[英]Why does console.log prints array even when the array is updated after the console statements?
我運行了以下JS代碼。 控制台將打印一個空數組。
function xyz(){ var a=[]; var b=[]; console.log(a); for(i=0;i<10;i++){ b.push(i); } a=b; }
function xyz(){ var a=[]; console.log(a); for(i=0;i<10;i++){ a.push(i); } }
控制台將打印從0到9的數組。另外,我在這里看到的是,即使console語句位於for循環的上方,我們在該循環中推送數組中的值,但控制台仍在打印,但在第一種情況下不是(我認為是因為該控制台正在打印的引用為空)。代碼已在chrome瀏覽器控制台上進行了測試。
function xyz(){
var a=[];
console.log(a);
for(var i=0;i<10;i++){
a.push(i);
}
}
xyz();
當我們在chrome控制台中看到它時,它有一個空數組,但是當我們展開它時,它也在顯示具有length屬性的數組值。
您需要在那里密切注意,那里有一個i
(信息)說,它剛剛被評估。
這意味着chrome控制台會獲得對該數組的實時引用,並在console.log()
上顯示length
屬性等於0的空白數組,但還會對該數組添加實時引用,因此在擴展時我們會看到數組
在代碼中更新數組后,需要使用console.log()
才能正常工作。
function xyz(){ var a=[]; for(i=0;i<10;i++){ a.push(i); //array is updating here } console.log(a); } xyz();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.