音频请点此进行收听
音频原文:
今天在segmentfault看到一篇文章,是讲JS传值的方式的,觉得很有价值,想和大家分享一下。
都知道JS中有二种值的传递方式,分别是按值传递和按引用传递。这个东西,在计算机科学里,叫求值策略,它是决定变量之间,函数的形参和实参之间是如何传递的。
简单的讲,按值传递,看例子,下面的音频原文里有例子,
然后来看对象,
可以看到属性值被修改了,说明对象是按引用传递的,形参和实参引用的是同一个对象。
那再来看下面这个,
看,虽然形参和实参引用的是一个对象,但形参的修改并未能影响到实参。这是为啥呢?
按文中的说法,JS的基本类型,是按值传递的。而对像类型的传递,是按共享传递的。就是说,给函数传入一个对象时,函数接受的是一个传入对象的引用的副本。在这种共享传递中,对接收传入对象的形参的赋值,不会影响到原来的被传入的对象。就像下面这样的,不能以修改形参的方式,来修改实参的值。
图4
但是,虽然是引用的副本,但引用的对象是相同的。所以,修改函数里形参的属性,却是可以的,是可以影响到原来的被传入的实参的属性值。
注意啊,只是属性。
图5
最后!
分享最好的一点在于,我原来不懂,给你们讲一遍,不管你们懂不懂,反正我是懂了。
哈哈哈,开心