標籤:name style turn 方式 不同的 記憶體回收機制 整數 傳回值 log
在記憶體中,分為棧、堆、程式碼片段、靜態區,為了快速處理複雜的代碼,在不同的區間儲存不同的資料類型。
資料類型分為初始類型與參考型別,初始類型在棧中儲存,變數賦值傳值不傳址,參考型別在堆中儲存,傳址不傳值。對於傳址和傳值舉個例子:
1.初始類型賦值傳遞:
var num=200;var gert=num;num=300;console.log(gert) //200//只傳值,num值的變化對gert沒影響
2.參考型別賦值傳遞:
var aa=[1,2];var bb=aa;aa.push(3);console.log(bb);//[1,2,3]//傳址不傳值,aa的變化對bb有影響
再來說初始資料類型,分為number、string、boolean、undefined、null
1.number:主要包括整數、小數(浮點)、負數、進位(二進位、八進位、十六進位),以0x開頭的為十六進位,0開頭的為8進位,進位轉化採用加權方式
2.string:一般引號引起的都是字串,\n換行 \r斷行符號 \f分頁 \t定位字元(Tab)
3.Boolean:true false (任何資料類型都可被判斷為 true false )
4.undefined:預設為undefined的情況
a)一個變數只聲明不賦值:var a;console.log(a) //undefined
b)函數中傳參,如果形式參數沒有被傳值,預設為undefined
function aa(a,b){ console.log(a); console.log(b);}aa("我是第一個參數")//“我是第一個參數” undefined
c)數組中某個下標的位置沒有被傳值,預設為undefined
var arry=[1,2,,4]console.log(arry[2])//undefined
d)對象中沒有某個屬性,預設為undefined
function person(){ this.name="zhangsan";}var obj=new person();console.log(obj.name);console.log(obj.say);//zhangsan undefined
e)函數中沒有定義傳回值,預設為undefined
function person(){ var aa="傳回值"; return aa;}person();console.log(person()) //傳回值function person(){ var aa="傳回值"; return;} person(); console.log(person()) //undefined
5.null
預留位置,直接清Null 物件
(undefined與null的區別:在記憶體回收機制中,null直接清Null 物件,undefined是js中的內部回收機制)
引用資料類型主要包括函數、數組、對象(數組對象、字串對象、自訂對象。。。)
javascript——資料類型