這篇文章帶給大家的內容是關於js基本語法的介紹:資料類型以及變數類型,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
一、不可改變的原始值(堆疊資料)(五個)
數字(number),字串(string),布林值(boolean),undefined,null
其中;undefined是未定義的意思,而null是空的意思,他們兩個的區別在於,null有值,不過這個值是空值,而undefined是未定義,完全沒有值的意思。 null一般用作佔位。
var a = 4; var b = a; a = 10; console.log(b);//4//原始值是把一个值a放到另一个值b里面,改了第一个值a,第二个之值b不变
二、引用值(堆疊資料)
陣列(array),物件(object),函數(function)
注意:只要對變數進行賦值就會進行記憶體的重新申請
var arr = [1, 2]; var arr1=arr; arr.push(3); console.log(arr1); //[1, 2, 3] //引用值时把第一个值放到第二个值里面,改变第一个值,第二个值也改变 //引用值是在栈内存里面存放堆的地址,拷贝的是地址,所以改变了arr,实际上是改变了arr指向的地址内存放的内容,而arr和arr1指向同一个地址,故arr1也跟着变
位址 | ##變數 | 儲存值 |
#0x0001 | arr | #[1,2] [1,2,3] <--arr.push(3) |
0x0002 | arr1 | 0x0001 |
位址 | 變數 | #儲存值 |
0x0001 | arr | #[1,2] |
#0x0002 | arr1 | |
要避免使用连续赋值符号:下面举两个例子
a = {n:1 b == a={m:1console.log(b);
1.var a = {n:1},在内存中申请两个地址,分别存放a和n;
2.var b = a;申请一个地址存放b,值指向a的地址;
3.a.n= a={m:1};
(1)(这里对变量进行了赋值,因此要重新申请内存)先申请了内存地址n(0x0004)和a(0x0005);由于n值占用了新的内存,故0x0001处 存储值由n:0x0002变为n:0x0004;
(2)赋值;a={m:1},申请m地址(0x0006),
因此:a : {m:0x0006}--->{m:1}
b: {0x0001}--->{n:0x0004}---->{ n:0x0005}---->{n:{m:0x0006}}--->{n:{m:1}}
地址 | 变量 | 存储值 |
0x0001 | a (1) | n:0x0002 n:0x0004 ---(1) |
0x0002 | -n- (1) | 1 |
0x0003 | #b | #0x0001 |
0x0004 | # n | |
##0x0005 #0x0005 | a #(1) | |
| ##m:0x0006 (2)#0x0006 | m (2) |
var a = {n:1}; var b = a; a={m:1};//a重新赋值,换了一个房间,b仍然指向原来的房间(地址) a.n =a; console.log(a);//{m:1,n:{m:1,n:{..}}}//一直循环 console.log(b);//{n:1}
相关推荐:
以上是js基本語法的介紹:資料類型以及變數類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!