title: JS对象(2)值传递与引用传递
date: 2016-10-05
tags: JavaScript数据结构
咱们须要先回忆一下。code
JavaScript 是一种弱类型或者说动态语言。这意味着你不用提早声明变量的类型,在程序运行过程当中,类型会被自动肯定。对象
此外,最新的 ECMAScript 标准定义了7中数据类型:ip
6种 原始类型: Boolean
, Null
, Undefined
, Number
, Stirng
, Symbol
内存
一种复杂类型(引用类型)对象: Object
.字符串
JavaScript 一切皆对象(除了6中原始类型)it
在 JS 中,全部除 Object 觉得的类型都是不可变的。好比,JS 中字符串是不可变的,任何对字符串的操做必定返回了一个新字符串,原始字符串并无被改变。io
经过上述的理解要明白 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 的值被改变了
引用传递:
将内存地址进行传递,至关于把原变量完整的传递过来。
当咱们修改传递后的值时,修改的是内存中原来的位置,会对原变量形成影响。
这种状况每每出如今对象上。
利用引用传递的特性,咱们有了实现面向对象的基础