javascript的字串按引用複製和傳遞,按值來比較介紹與應用

來源:互聯網
上載者:User

按值和按引用的比較
Numbers 和 Boolean 類型的值 (true 和 false) 是按值來複製、傳遞和比較的。當按值複製或傳遞時,將在電腦記憶體中分配一塊空間並將原值複製到其中。然後,即使更改原來的值,也不會影響所複製的值(反過來也一樣),因為這兩個值是獨立的實體。

對象、數組以及函數是按引用來複製、傳遞和比較的。 當按地址複製或傳遞時,實際是建立一個指向原始項的指標,然後就像拷貝一樣來使用該指標。如果隨後更改原始項,則將同時更改原始項和複製項(反過來也一樣)。實際上只有一個實體;“複本”並不是一個真正的複本,而只是該資料的又一個引用。

當按引用比較時,要想比較成功,兩個變數必須參照完全相同的實體。例如,兩個不同的 Array 對象即使包含相同的元素也將比較為不相等。要想比較成功,其中一個變數必須為另一個的參考。要想檢查兩個數組是否包含了相同的元素,比較 toString() 方法的結果。

最後,字串是按引用複製和傳遞的,但是是按值來比較的。請注意,假如有兩個 String 對象(用 new String("something") 建立的),按引用比較它們,但是,如果其中一個或者兩者都是字串值的話,按值比較它們。

字串是按引用複製和傳遞的,但是是按值來比較的。請注意,假如有兩個 String 對象(用 new String("something") 建立的),按引用比較它們,但是,如果其中一個或者兩者都是字串值的話,按值比較它們。 複製代碼 代碼如下:var str1="aa";
var str2=new String("aa");
var str3=str2;
function test(p){
var str4=p;
console.log(str4===str2);
}
console.log(str1===str2); //false
console.log(str3===str2); //true
test(str1);//false
test(str2);//true

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.