资讯专栏INFORMATION COLUMN

JS对象(2)值传递与引用传递

Jacendfeng / 2358人阅读

摘要:对象值传递与引用传递数据类型与数据结构我们需要先回忆一下。值传递与引用传递通过上述的理解要明白中值传递与引用传递就太简单了,下面的两个超级简单的可以诠释一切。

title: JS对象(2)值传递与引用传递
date: 2016-10-05
tags: JavaScript

0x00 数据类型与数据结构

我们需要先回忆一下。

JavaScript 是一种弱类型或者说动态语言。这意味着你不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。

此外,最新的 ECMAScript 标准定义了7中数据类型:

6种 原始类型: Boolean, Null, Undefined, Number, Stirng, Symbol

一种复杂类型(引用类型)对象: Object.

JavaScript 一切皆对象(除了6中原始类型)

在 JS 中,所有除 Object 以为的类型都是不可变的。比如,JS 中字符串是不可变的,任何对字符串的操作一定返回了一个新字符串,原始字符串并没有被改变。

0x02 值传递与引用传递

通过上述的理解要明白 Javascript 中值传递与引用传递就太简单了,下面的两个超级简单的 demo 可以诠释一切。

// 值传递
var a = 2;
function foo(b){
    b +=10;        
}
foo(a)
console.log(a) 
//  2
// 原始 a 的值没有发生改变

值传递:

只将值进行传递,与原变量无关,值会被复制一份,保存在内存中另一个不同的位置。

当我们修改传递后的值时,修改的是内存中新的位置,而原变量不会被影响,还是原来的值。

这种情况往往出现在6中原始类型中。

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

引用传递:

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

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

这种情况往往出现在对象上。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86517.html

相关文章

  • JS中的是按传递,还是按引用传递呢?

    摘要:按引用传递时,函数的形参接收实参的隐式引用,而不再是副本。探究值的传递方式的基本类型,是按值传递的。但这样是否说明的对象是按引用传递的呢我们再看下面的例子仍然是并未被修改为如果是按引用传递,修改形参的值,应该影响到实参才对。 最近遇到个有趣的问题:JS中的值是按值传递,还是按引用传递呢? 在分析这个问题之前,我们需了解什么是按值传递(call by value),什么是按引用传递(ca...

    Jochen 评论0 收藏0
  • js 函数、参数传递引用类型基本类型

    摘要:基本类型和引用类型用操作符定义的变量将成为作用域中的局部变量。在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量即命名参数。结果依旧是在调用函数初时,与引用的是同一对象,所以首次的属性赋值会对有所影响。 函数 参数 1.js函数不介意传递进来多少个参数,也不在乎传递进来参数是什么类型。2.arguments对象:类数组 arguments对象的长度是由传入的参数个数决定的,...

    Lavender 评论0 收藏0
  • js 函数、参数传递引用类型基本类型

    摘要:基本类型和引用类型用操作符定义的变量将成为作用域中的局部变量。在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量即命名参数。结果依旧是在调用函数初时,与引用的是同一对象,所以首次的属性赋值会对有所影响。 函数 参数 1.js函数不介意传递进来多少个参数,也不在乎传递进来参数是什么类型。2.arguments对象:类数组 arguments对象的长度是由传入的参数个数决定的,...

    Bowman_han 评论0 收藏0
  • JavaScript 是如何工作的:JavaScript 的共享传递和按传递

    摘要:它对数组和对象使用按值传递,但这是在的共享传参或拷贝的引用中使用的按值传参。例如在这里,变量和值在执行期间存储在堆栈中。返回值这是可选的,函数可以返回值,也可以不返回值。变量被推入堆栈,从而在执行时成为的副本。 这是专门探索 JavaScript 及其所构建的组件的系列文章的第 22 篇。 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! 如果你错过了前面的章节,可...

    keithyau 评论0 收藏0
  • JavaScript 是如何工作的:JavaScript 的共享传递和按传递

    摘要:它对数组和对象使用按值传递,但这是在的共享传参或拷贝的引用中使用的按值传参。例如在这里,变量和值在执行期间存储在堆栈中。返回值这是可选的,函数可以返回值,也可以不返回值。变量被推入堆栈,从而在执行时成为的副本。 这是专门探索 JavaScript 及其所构建的组件的系列文章的第 22 篇。 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质文章等着你! 如果你错过了前面的章节,可...

    陈伟 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<