淺談Javascript基本類型和引用類型的值

引言:
因為Javascript變量是松散類型的本質件蚕,所以決定了它只是在特定時間用于保存特定的值的一個名字而已猪勇,所以變量的值以及數據類型可以在腳本的生命周期內改變溜族。

一.基本類型和引用類型的值
ECMAScript變量有兩種不同數據類型的值:基本類型值和引用類型值。
基本類型值:簡單的數據
引用類型的值:可能由多個值構成的對象

在將一個值賦值給變量時挤悉,解析器必須確定這個值是基本類型值還是引用類型值渐裸,
比如基本數據類型:Undefined、Null装悲、Boolean昏鹃、Number和String,這五種基本數據類型是按照值訪問的诀诊,因為可以操作保存在變量中的值洞渤。而引用類型的值是保存在內存中的對象,與其他語言不同属瓣,Javascript不允許直接訪問內存中的位置载迄,也就是說不能直接操作對象的內存空間。

在操作對象時實際上是在操作對象的引用而不是實際的對象抡蛙。所以引用類型的值是按引用訪問的护昧。

1.動態(tài)的屬性
定義基本類型的值和引用類型的值基本是一樣的,但是當這個值保存到變量中以后粗截,對不同類型的值可以執(zhí)行的操作則大相徑庭惋耙。
對于引用類型的值,我們可以為其添加屬性和方法熊昌,也可以改變和刪除其屬性和方法怠晴。
比如:
var person = new Object();
person.name = "路飛";
alert(person.name);//路飛
但是我們不能給基本類型的值添加屬性,盡管這樣做不會導致任何錯誤...
var name = "索隆";
name.dream = "世界第一劍士";
alert(name.dream); //undefined
這也說明了一個問題浴捆,只能給基本類型的值動態(tài)的添加屬性。

2.復制變量值
2.1如果從一個變量向另一個變量復制基本類型的值稿械,會在變量上創(chuàng)建一個新值选泻,然后把該值復制到新變量分配的位置上。
比如:
var num1 = 5;
var num2 = num1;
此時,num1的5和num2的5是完全獨立的页眯。


基本類型的值復制變量.png

2.2當從一個變量向兩一個變量復制引用類型的值時梯捕,同樣也會將變量存儲的值復制到新的變量的分配的位置上,但是這個值的副本實際上是一個指針窝撵,而這個指針指向存儲在堆中的一個對象傀顾。復制結束后,兩個變量實際上是引用同一個對象碌奉,因此改變其中一個變量短曾,就會影響另一個變量。
比如:
var obj1 = new Object();
var obj2 = obj1;
obj1.name = "喬巴";
alert(obj2.name);//喬巴

引用類型的復制變量.png

3.傳遞參數
ECMAScript中所有函數的參數都是按值傳遞的赐劣!
再向參數傳遞基本類型的值時嫉拐,被傳遞的值會會被復制給一個局部變量(即命名參數)。再向參數傳遞引用類型的值時魁兼,會把這個值在內存中的地址復制個局部變量婉徘,因此這個局部變量的變化會反映在函數的外部。
比如:
function addTen(num){
num += 10;
return num;
}
var count = 20;
var result = addTen(count);
alert(count); //20 沒有變化
alert(result);//30

如果使用對象傳遞
function setName(obj){
obj.name = "山治";
}
var person = new Object();
setName(person);
alert(person.name);//山治
當person當做參數傳遞到setName()函數中之后就復制 給了obj,在這個函數的內部咐汞,obj和person引用的是同一個對象盖呼。所以在函數內部添加屬性后,函數外部的person也將有所反應化撕。
function setName(obj){
obj.name = "山治"几晤;
obj = new Object();
obj.name = "喬巴";
}
var person = new Object();
setName(person);
alert(person);//山治

4.檢測類型
4.1基本數據類型檢測:typeof
var str = "123";alert(typeof str);//String
var num = 123;alert(typeof num);//Number
var bool = true;alert(typeof bool);//Boolean
var udf ; alert(typeof udf);//undefined
var n = null;alert(typeof n);//object
var obj = new Object();alert(typeof obj);//object

4.2引用類型檢測:instanceof
語法:result = variable instanceof constructor
alert(person instanceof Object);//變量person是object嗎? true : false
alert(arr instanceof Array);//變量arr 是Array嗎?true : false
alert(reg instanceof RegExp);//變量reg是RegExp嗎? true : false

注意:所有引用類型都是Object的示例侯谁,因此在檢測一個引用類型值和Object構造函數時锌仅,instanceof操作符始終會返回true。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末墙贱,一起剝皮案震驚了整個濱河市热芹,隨后出現的幾起案子,更是在濱河造成了極大的恐慌惨撇,老刑警劉巖伊脓,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異魁衙,居然都是意外死亡报腔,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門剖淀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纯蛾,“玉大人,你說我怎么就攤上這事纵隔》撸” “怎么了炮姨?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碰煌。 經常有香客問我舒岸,道長,這世上最難降的妖魔是什么芦圾? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任蛾派,我火速辦了婚禮,結果婚禮上个少,老公的妹妹穿的比我還像新娘洪乍。我一直安慰自己,他們只是感情好稍算,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布典尾。 她就那樣靜靜地躺著,像睡著了一般糊探。 火紅的嫁衣襯著肌膚如雪钾埂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天科平,我揣著相機與錄音褥紫,去河邊找鬼。 笑死瞪慧,一個胖子當著我的面吹牛髓考,可吹牛的內容都是我干的。 我是一名探鬼主播弃酌,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼氨菇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了妓湘?” 一聲冷哼從身側響起查蓉,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榜贴,沒想到半個月后豌研,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡唬党,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年鹃共,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驶拱。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡霜浴,死狀恐怖,靈堂內的尸體忽然破棺而出蓝纲,到底是詐尸還是另有隱情坷随,我是刑警寧澤房铭,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站温眉,受9級特大地震影響,放射性物質發(fā)生泄漏翁狐。R本人自食惡果不足惜类溢,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望露懒。 院中可真熱鬧闯冷,春花似錦、人聲如沸懈词。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坎弯。三九已至纺涤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抠忘,已是汗流浹背撩炊。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留崎脉,地道東北人拧咳。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像囚灼,于是被迫代替她去往敵國和親骆膝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內容