JS對象(2)值傳遞與引用傳遞


title: JS對象(2)值傳遞與引用傳遞
date: 2016-10-05
tags: JavaScript數據結構


0x00 數據類型與數據結構

咱們須要先回憶一下。code

JavaScript 是一種弱類型或者說動態語言。這意味着你不用提早聲明變量的類型,在程序運行過程當中,類型會被自動肯定。對象

此外,最新的 ECMAScript 標準定義了7中數據類型:ip

6種 原始類型: Boolean, Null, Undefined, Number, Stirng, Symbol 內存

一種複雜類型(引用類型)對象: Object.字符串

JavaScript 一切皆對象(除了6中原始類型)it

在 JS 中,全部除 Object 覺得的類型都是不可變的。好比,JS 中字符串是不可變的,任何對字符串的操做必定返回了一個新字符串,原始字符串並無被改變。io


0x02 值傳遞與引用傳遞

經過上述的理解要明白 Javascript 中值傳遞與引用傳遞就太簡單了,下面的兩個超級簡單的 demo 能夠詮釋一切。console

// 值傳遞
var a = 2;
function foo(b){
    b +=10;        
}
foo(a)
console.log(a) 
//  2
// 原始 a 的值沒有發生改變

值傳遞:function

  • 只將值進行傳遞,與原變量無關,值會被複制一份,保存在內存中另外一個不一樣的位置。

  • 當咱們修改傳遞後的值時,修改的是內存中新的位置,而原變量不會被影響,仍是原來的值。

  • 這種狀況每每出如今6中原始類型中。

//引用傳遞
var a = [2];
function foo(b){
    b.push(10)    
}
foo(a)
console.log(a) 
//  [2, 10]
// 原始 a 的值被改變了

引用傳遞:

  • 將內存地址進行傳遞,至關於把原變量完整的傳遞過來。

  • 當咱們修改傳遞後的值時,修改的是內存中原來的位置,會對原變量形成影響。

  • 這種狀況每每出如今對象上。

利用引用傳遞的特性,咱們有了實現面向對象的基礎

相關文章
相關標籤/搜索