js 值類型和引用類型

最近在看jquery源碼,發(fā)現(xiàn)自己的js基礎(chǔ)真不是一般的弱!B站洹角溃!這不,趕緊來惡補了喳钟!

一屁使、基本類型

也稱值類型,包括字符串(string)荚藻、數(shù)字(number)屋灌、布爾(boolean)、Null应狱、Undefined共郭、Symbol(ES6新增,類似于string的數(shù)據(jù)類型疾呻,表示獨一無二,詳情見MDN-Symbol)六種基本類型除嘹。

特點:
1. 指向的內(nèi)存空間不會變
2. 按值訪問,可以操作變量實際值
3. 存放在棧區(qū)(棧區(qū)指內(nèi)存里的棧內(nèi)存)岸蜗,包括變量的標(biāo)識符和變量的值尉咕。
復(fù)制的例子:
var a=3;
var b=a;
console.log(a);//3
b=5;
console.log(a);//3
console.log(b);//5

顯然,a 不會隨b的改變而改變璃岳。值類型就像陌生人一樣年缎,雖然都是人,但我有我的特色铃慷,你有你的愛好单芜,各自都沒有影響。

二犁柜、引用類型(敲黑板洲鸠、重點)

數(shù)組(array)、對象(object)、函數(shù)(function)

PS:其實也可以直接說object一種扒腕,畢竟一切皆對象嘛绢淀,哈哈

特點:
  1. 在計算機中占用內(nèi)存可變
  2. 訪問是按引用訪問。當(dāng)查詢時瘾腰,我們需要先從棧中讀取內(nèi)存地址皆的,然后再順藤摸瓜地找到保存在堆內(nèi)存中的值
  3. 值保存在內(nèi)存中,而JS是不能直接訪問內(nèi)存的蹋盆,所以對于引用類型祭务,操作的不是實際的對象而是對象的引用。
復(fù)制的例子:
var obj1={
    "name":'jack',
    "lesson":{
        "Chinese":'110',
        "Mathematics":"135"
    }
}
var obj2=obj1.lesson;
obj1.lesson.English="90";
console.log(obj1.lesson.English);//90
console.log(obj2.English);//90

obj2屬性和值隨著obj1的改變而改變怪嫌!
調(diào)換下順序义锥,改變obj2屬性,不改變obj1,看下結(jié)果:

var obj1={
    "name":'jack',
    "lesson":{
        "Chinese":'110',
        "Mathematics":"135"
    }
}
var obj2=obj1.lesson;
obj2.English="90";
console.log(obj2.English);//90
console.log(obj1.lesson.English);//90

obj1屬性和值隨著obj2的改變而改變岩灭!

引用類型的復(fù)制實際上是共用一個指針拌倍,而這個指針指向存儲在堆中的一個對象。兩個變量實際上引用的是同一個對象噪径。

這種感覺就像夫妻一樣柱恤,你影響著我,我影響著你找爱。

所以這種復(fù)制也叫淺拷貝啦梗顺。什么?什么叫深拷貝车摄?看官先自行思考熟悉下寺谤,待我下回分解 O(∩_∩)O

比較的例子:
var a = new Number(1);    
var b = new Number(1);   
var c = a;                // 把a的引用賦值給c  
console.log(a==b);              // false  
console.log(a==c);              // true 

a和b分別new了個Number 對象,指向不同對象的引用,因此a!=b吮播;而c=a变屁,即a和c的引用地址是一樣的,所以a==c意狠。

不難看出粟关,js中對象的比較實際是內(nèi)存地址的比較

傳遞的例子:
var a = [1,2,3];  
function f(x){  
    x[0] = 4;      // 在函數(shù)中修改參數(shù)值  
}  
f(a);              
console.log(a[0]);      

a作為參數(shù)傳遞的也是引用,最后a的值為[4,2,3]

最后环戈,一個備受爭議的例子:
function setName(obj){
    obj.name="ted";
    obj=new Object();//個人覺得這明明就是作用域問題,局部變量沒有return,執(zhí)行完就銷毀了
    obj.name="marry";
}
var obj=new Object();
setName(obj);
console.log(obj.name);

個人覺得就是作用域問題闷板,不知道爭論的點和引用傳遞有什么關(guān)系。院塞。遮晚。

最后

引用類型或許單獨看著很簡單,但是如果在復(fù)雜的應(yīng)用中(尤其是上下文依賴比較嚴重的地方)還是能一眼看穿迫悠,那就是真大神了吧E羝帷(努力ing)

參考文章:

挺喜歡這個猿的比喻:js 值類型和引用類型
值類型和引用類型堆棧的深入理解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末巩梢,一起剝皮案震驚了整個濱河市创泄,隨后出現(xiàn)的幾起案子艺玲,更是在濱河造成了極大的恐慌,老刑警劉巖鞠抑,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饭聚,死亡現(xiàn)場離奇詭異,居然都是意外死亡搁拙,警方通過查閱死者的電腦和手機秒梳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箕速,“玉大人酪碘,你說我怎么就攤上這事⊙尉ィ” “怎么了兴垦?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長字柠。 經(jīng)常有香客問我探越,道長,這世上最難降的妖魔是什么窑业? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任钦幔,我火速辦了婚禮,結(jié)果婚禮上常柄,老公的妹妹穿的比我還像新娘鲤氢。我一直安慰自己,他們只是感情好西潘,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布铜异。 她就那樣靜靜地躺著,像睡著了一般秸架。 火紅的嫁衣襯著肌膚如雪揍庄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天东抹,我揣著相機與錄音蚂子,去河邊找鬼。 笑死缭黔,一個胖子當(dāng)著我的面吹牛食茎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播馏谨,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼别渔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哎媚,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤喇伯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拨与,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稻据,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年买喧,在試婚紗的時候發(fā)現(xiàn)自己被綠了捻悯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡淤毛,死狀恐怖今缚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情低淡,我是刑警寧澤荚斯,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站查牌,受9級特大地震影響事期,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纸颜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一兽泣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胁孙,春花似錦唠倦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至狂票,卻和暖如春候齿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闺属。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工慌盯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掂器。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓亚皂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親国瓮。 傳聞我的和親對象是個殘疾皇子灭必,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容