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 的值被改变了

引用传递:

  • 将内存地址进行传递,至关于把原变量完整的传递过来。

  • 当咱们修改传递后的值时,修改的是内存中原来的位置,会对原变量形成影响。

  • 这种状况每每出如今对象上。

利用引用传递的特性,咱们有了实现面向对象的基础

相关文章
相关标签/搜索