2017-01-03 28 views
0

這裏ab的輸出是相同的,但在slice()的情況下,我們沒有傳遞任何參數,所以a,bc的輸出必須相同。那麼爲什麼c的輸出不同於abslice()函數如何在Javascript中使用push()函數?

<!DOCTYPE html> 
     <html> 
     <head> 
     </head> 
     <body> 
     <p id="1"></p> 
     <p id="2"></p> 
     <p id="3"></p> 
     <p id="4"></p> 
     <script> 
     var a=["a","b","c"]; 
     var b=a; 
     var c=a.slice(); 
     a.push("date"); 
     document.getElementById("1").innerHTML=a; 
     document.getElementById("2").innerHTML=b; 
     document.getElementById("3").innerHTML=c; 
     document.getElementById("4").innerHTML=a; 

     </script> 
     </body> 
     </html> 

    ouptput: 
    a,b,c,date 
    a,b,c,date 
    a,b,c 
    a,b,c,date`` 
+0

您重新切片原始陣列之前推新值是「日期」的陣列陣列 – digit

回答

2

MDN

的slice()方法返回一個陣列的一部分的一個淺拷貝到從開始到結束(不包括端部)中選擇一個新的數組對象。原始數組不會被修改。

所以cab是對它的引用的副本。因此,當您修改a,b更改但c不更改。

0

在推送新元素之前,您正在對您的數組進行切片。此外,slice還會返回一個新數組,因此「a」數組的引用不會影響您的「c」數組。

希望這有助於...

0

a.slice()slice函數內沒有宣佈任何價值。所以不執行任何action.And a.slice() != a。因爲你是推到前陣聲明c=a.slice()Slice()不會更改數組值。它會將數組值複製到c數組。如果你需要啊日期只是把與c

var a=["a","b","c"]; 
 
     var b=a; 
 
     var c=a.slice(); 
 
     a.push("date"); 
 
     c.push('date') 
 
     document.getElementById("1").innerHTML=a; 
 
     document.getElementById("2").innerHTML=b; 
 
     document.getElementById("3").innerHTML=c; 
 
     document.getElementById("4").innerHTML=a;
<p id="1"></p> 
 
     <p id="2"></p> 
 
     <p id="3"></p> 
 
     <p id="4"></p>

相關問題