javascript的字符串按引用復制和傳遞,按值來比較介紹與應用
更新時間:2012年12月28日 10:31:27 作者:
字符串是按引用復制和傳遞的,但是是按值來比較的;當按值復制或傳遞時,將在計算機內存中分配一塊空間并將原值復制到其中,需要的朋友可以參考下
按值和按引用的比較
Numbers 和 Boolean 類型的值 (true 和 false) 是按值來復制、傳遞和比較的。當按值復制或傳遞時,將在計算機內存中分配一塊空間并將原值復制到其中。然后,即使更改原來的值,也不會影響所復制的值(反過來也一樣),因為這兩個值是獨立的實體。
對象、數(shù)組以及函數(shù)是按引用來復制、傳遞和比較的。 當按地址復制或傳遞時,實際是創(chuàng)建一個指向原始項的指針,然后就像拷貝一樣來使用該指針。如果隨后更改原始項,則將同時更改原始項和復制項(反過來也一樣)。實際上只有一個實體;“復本”并不是一個真正的復本,而只是該數(shù)據的又一個引用。
當按引用比較時,要想比較成功,兩個變量必須參照完全相同的實體。例如,兩個不同的 Array 對象即使包含相同的元素也將比較為不相等。要想比較成功,其中一個變量必須為另一個的參考。要想檢查兩個數(shù)組是否包含了相同的元素,比較 toString() 方法的結果。
最后,字符串是按引用復制和傳遞的,但是是按值來比較的。請注意,假如有兩個 String 對象(用 new String("something") 創(chuàng)建的),按引用比較它們,但是,如果其中一個或者兩者都是字符串值的話,按值比較它們。
字符串是按引用復制和傳遞的,但是是按值來比較的。請注意,假如有兩個 String 對象(用 new String("something") 創(chuàng)建的),按引用比較它們,但是,如果其中一個或者兩者都是字符串值的話,按值比較它們。
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
Numbers 和 Boolean 類型的值 (true 和 false) 是按值來復制、傳遞和比較的。當按值復制或傳遞時,將在計算機內存中分配一塊空間并將原值復制到其中。然后,即使更改原來的值,也不會影響所復制的值(反過來也一樣),因為這兩個值是獨立的實體。
對象、數(shù)組以及函數(shù)是按引用來復制、傳遞和比較的。 當按地址復制或傳遞時,實際是創(chuàng)建一個指向原始項的指針,然后就像拷貝一樣來使用該指針。如果隨后更改原始項,則將同時更改原始項和復制項(反過來也一樣)。實際上只有一個實體;“復本”并不是一個真正的復本,而只是該數(shù)據的又一個引用。
當按引用比較時,要想比較成功,兩個變量必須參照完全相同的實體。例如,兩個不同的 Array 對象即使包含相同的元素也將比較為不相等。要想比較成功,其中一個變量必須為另一個的參考。要想檢查兩個數(shù)組是否包含了相同的元素,比較 toString() 方法的結果。
最后,字符串是按引用復制和傳遞的,但是是按值來比較的。請注意,假如有兩個 String 對象(用 new String("something") 創(chuàng)建的),按引用比較它們,但是,如果其中一個或者兩者都是字符串值的話,按值比較它們。
字符串是按引用復制和傳遞的,但是是按值來比較的。請注意,假如有兩個 String 對象(用 new String("something") 創(chuàng)建的),按引用比較它們,但是,如果其中一個或者兩者都是字符串值的話,按值比較它們。
復制代碼 代碼如下:
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
您可能感興趣的文章:
相關文章
深入學習js函數(shù)的隱式參數(shù) arguments 和 this
這篇文章主要介紹了 深入學習js函數(shù)的隱式參數(shù) arguments 和 this,arguments是一個類數(shù)組結構,它保存了調用時傳遞給函數(shù)的所有實參;this是函數(shù)執(zhí)行時的上下文對象, 這個對象有些讓人感到困惑的行為。 下面分別對他們進行討論。,需要的朋友可以參考下2019-06-06BootStrap的彈出框(Popover)支持鼠標移到彈出層上彈窗層不隱藏的原因及解決辦法
彈出框(Popover)與工具提示(Tooltip)類似,提供了一個擴展的視圖。本文給大家介紹BootStrap的彈出框(Popover)支持鼠標移到彈出層上彈窗層不隱藏的原因及解決辦法,喜歡的朋友參考下吧2016-04-04