基本變數型別 和引用型別 知識點

2021-08-06 06:18:59 字數 1330 閱讀 7844

ecmascript 變數可能包含兩種不同資料型別的值:

基本型別值和引用型別值

基本型別值指的是儲存在棧記憶體的簡單的資料段,即這種值完全儲存在記憶體中的乙個位置。而引用型別值則是指那些儲存在堆記憶體中的物件,意思是變數中儲存的實際上只是乙個指標,這個指標指向記憶體中的另乙個位置,該位置儲存物件。

基本型別是按值訪問的。

引用型別的值,由於這種值的大小不固定,因此不能把它們儲存到棧記憶體中。(大小固定)但記憶體位址的大小事固定的,因此可以將記憶體位址儲存在棧記憶體中。當查詢引用型別的變數時,先從棧中讀取記憶體位址,然後再通過位址找到堆中的值。對於這種,我們把它叫做按引用訪問。

動態屬性 

定義基本型別值和引用型別值得方式是相似的;建立乙個變數並為該變數賦值。但是,當這個值儲存到變數中以後,對不同型別值可以執行的操作則大相徑庭。

var box=new object(); //建立引用型別box.name='lee';//新增乙個屬性

alert(box.name);//"lee"

如果是基本型別的值新增屬性

var box="lee";

box.age=27;

alert(box.age);//undefined

這說明:只能給引用型別值動態地新增屬性

複製變數值

基本型別值:會在變數物件上建立乙個新值,然後把該值複製到為新變數分配的位置上。(複製的是值本身)

var num1=5;

var num2=num1;

var obj1=new object();

var obj2=obj1;

obj1.name="lee";

alert(obj2.name);//'lee'

傳遞引數(按值傳遞)

function setname(obj)

var person =new object();

setname(person);

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

如果person 是按引用傳遞的,那麼person就會自動被修改為指向其name屬性值為「greg」的新物件。但是沒有,這說明即使在函式內部修改了引數的

值,但原始的飲用仍然保持未變。

檢測型別

typeof 檢測基本型別

instanceof()檢測引用型別

1 C 知識點 值型別和引用型別

一.什麼是值型別?什麼引用型別?1.值型別的值是儲存在棧上的。引用型別是存在堆上的。2.值型別變數宣告之後,不管是否已經分配記憶體,編譯器在堆上為其分配記憶體。3.引用型別宣告的時候,這時候只在棧中分配一小片記憶體用於容納乙個位址,此時候並沒有為其分配堆上的記憶體位址,當new乙個例項的時候,真正建...

php 引用變數知識點

一 什麼是引用變數?在php中,用什麼符號定義引用變數?引用變數 用不同的名字訪問同乙個變數內容 定義方式 使用 符號 二 引用變數衍生知識點 1 寫時複製 copy on write 演示寫時複製 copy on write var dump memory get usage 357896 定義乙...

void 型別知識點

1 void 型別的指標可以指向任意型別的物件。2 對於乙個void 的變數p void p 它給我們的資訊僅僅是p是乙個指標變數,並不會給我們說明p指向的物件的型別,當然我們也不能使用p進行任何操作,比如 原因很簡單,因為我們就只知道他是乙個指標,並不知道該指標指向的物件的型別是什麼,因此該指標上...