js 基本型別和引用型別 變數複製 引數傳遞

2021-07-09 10:25:02 字數 1420 閱讀 6036

ecmascript

變數可能包含兩種不同資料型別的值:基本型別值和引用型別

。基本型別值指的是

簡單的資料段( undefined 、 null 、 boolean 、 number 和 string 。這 5 種基本資料型別是按值訪問

的,因為可以操作儲存在變數中的實際的值。),而引用型別值指那些可能由多個值構成的物件(引用型別的值是儲存在記憶體中的物件, 在操作物件時, 實際上是在操作物件的引用而不是實際的物件。)

複製變數值:

1.基本型別

2.引用型別

會將儲存在變數物件中的值複製乙份放到為新變數分配的空間中。不同的是,這個值的副本實際上是乙個指標,而這個指標指向儲存在堆中的乙個物件。複製操作結束後,兩個變數實際上將引用同乙個物件。因此,改變其中乙個變數,就會影響另乙個變數

var obj1 = new object();

var obj2 = obj1;

obj1.name = "nicholas";

alert(obj2.name); //"nicholas"

傳遞引數(按值傳遞)

ecmascript 中所有函式的引數都是按值傳遞的。也就是說,把函式外部的值複製給函式內部的引數,就和把值從乙個變數複製到另乙個變數一樣

function addten(num) 

var count = 20;

var result = addten(count);

alert(count); //20,沒有變化

alert(result); //30

但如果使用物件:
function setname(obj) 

var person = new object();

setname(person);

alert(person.name); //"nicholas"

在這個函式內部, obj 和 person 引用的是同乙個物件。換句話說,即

使這個變數是按值傳遞的, obj 也會按引用來訪問同乙個物件。於是,當在函式內部為 obj 新增 name

屬性後,函式外部的 person 也將有所反映;

function setname(obj) 

var person = new object();

setname(person);

alert(person.name); //"nicholas"即使在函式內部修改了引數的值,但原始的引用仍然保持未變

複製(基本型別和引用型別)

一 基本型別複製 可以理解為把原模板a複製在另外乙個資料夾存為b中,改變b的內容不影響a的內容。舉例如下 var num1 12 var num2 num1 num2 13 console.log num1 輸出為12,不受num2的影響二 引用型別複製 可以理解為兩個都指向同乙個位址,乙個變數改變...

js 引用型別和基本型別

js中的資料型別有以下幾種 基本型別 number boolean string undefined null symbol 引用型別 object array,function,date,正則物件,json物件 基本型別的資料是存放在棧記憶體中的,而引用型別的資料是存放在堆記憶體中的 複製變數值 ...

js 引用型別和基本型別

js中的資料型別有以下幾種 number boolean undefined object function string null 基本型別 number boolean string undefined null 引用型別 object function 基本型別的資料是存放在棧記憶體中的,而引...