JS中值的传递方式 | 前端卧谈会第11期

音频请点此进行收听

音频原文:

今天在segmentfault看到一篇文章,是讲JS传值的方式的,觉得很有价值,想和大家分享一下。

都知道JS中有二种值的传递方式,分别是按值传递和按引用传递。这个东西,在计算机科学里,叫求值策略,它是决定变量之间,函数的形参和实参之间是如何传递的。

简单的讲,按值传递,看例子,下面的音频原文里有例子,

然后来看对象,

可以看到属性值被修改了,说明对象是按引用传递的,形参和实参引用的是同一个对象。

那再来看下面这个,

看,虽然形参和实参引用的是一个对象,但形参的修改并未能影响到实参。这是为啥呢?

按文中的说法,JS的基本类型,是按值传递的。而对像类型的传递,是按共享传递的。就是说,给函数传入一个对象时,函数接受的是一个传入对象的引用的副本。在这种共享传递中,对接收传入对象的形参的赋值,不会影响到原来的被传入的对象。就像下面这样的,不能以修改形参的方式,来修改实参的值。

图4

但是,虽然是引用的副本,但引用的对象是相同的。所以,修改函数里形参的属性,却是可以的,是可以影响到原来的被传入的实参的属性值。

注意啊,只是属性。

图5

最后!

分享最好的一点在于,我原来不懂,给你们讲一遍,不管你们懂不懂,反正我是懂了。

哈哈哈,开心

原文发布于微信公众号 - web前端教室(webfeel)

原文发表时间:2016-07-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

Python入门基础连载(2)数据结构

Python数据结构包括了列表(list),元组(tuple),字典(dict)和集合(set),这些也都可以称之为容器,下面Cooldog就和大家一起学习一下...

2057
来自专栏GreenLeaves

Jquery dom搜索之siblings()方法

      如果给定一个dom的元素集合的算则其对象,siblings()方法允许我们在dom树中搜索这个元素集合的同胞元素,并匹配这些元素构造一个新的对象,J...

2337
来自专栏Brian

Python 深浅拷贝

Python浅拷贝和深度拷贝 今天面试了一个计算机专业研究生且大学出身也很好,但是面试的结果来看并没有达到我的预期。很多基础计算机的知识貌似都不是很懂,更别说...

4128
来自专栏JackeyGao的博客

一个Python3和Python2的range差异

Python 3 中执行100000000 in range(100000001)会比Python 2快的非常多。

1121
来自专栏怀英的自我修炼

怀英漫谈8 - JS的字符串和数

你好,这周想和你聊聊JS中的基本语法的另一个部分——字符串和数组的使用。这次我们先聊聊字符串和它的方法。

1352
来自专栏Coding迪斯尼

使用普拉特解析法解析复杂的算术表达式

1742
来自专栏MyBlog

Effective.Java 读书笔记(8)关于equals方法

重写equals看上去十分简单对吧,但是我觉得很多时候重写equals可能会招致一些问题,这些问题有时可能会特别严重,当然了不重写不就完事了吗?但是这只适用于那...

924
来自专栏开发技术

排序之归并排序

  “归并”一词的中文含义就是合并、并入的意思,而在数据结构中的定义是将两个或两个以上的有序表组合成一个新的有序表。既然是归并、并入,那么必然就有子序列了,子序...

1224
来自专栏zhisheng

干货分享:让你分分钟学会 javascript 闭包 一像素

闭包,是 javascript 中重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,你很难从定义去理解它。...

3515
来自专栏Python入门

十年Python大牛花了三天总结出来的python基础知识实例,超详细!

6、变量在内存中是通过引用计数来跟踪管理的~想要一起学习Python的可以加裙227-435-450,裙内有各种资料满足大家,欢迎加裙

3541

扫码关注云+社区

领取腾讯云代金券