javascript函数传参的思考

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript函数传参的思考相关的知识,希望对你有一定的参考价值。

 今天下午思考了一下调用函数的时候,是怎么样吧参数传给执行的函数。当值的类型不同的时候,又没有变化。

  当参数的值是基本类型的时候,这个时候是按值传递的,这个肯定都是清楚的,但是当值是引用类型的时候,这个时候情况又是怎么样的啊。

  技术分享

  技术分享

当我们把一个对象当作参数的时候传递的时候,我们发现怎么运行funx函数,但是全局对象a变量也被修改了,这个时候有些迷惑。参数在传递的时候,不是通过值传递的么,为什么会修改外部环境中的对象的属性。发现这个好像是引用传递。但是,如果我们运行下面这样的函数的时候:

技术分享

技术分享

发现输出的结果并没有变成20,其实当函数的参数变成引用类型的时候,我们这个值就变了,我们都知道js的基本数据类型是保存在栈内存中,而引用类型却是保存在堆内存中的。当我们用一个变量指向这个引用类型的时候,其实变量并不是确定指向这个引用类型,而是一个指向这个引用类型所在内存的指针。当我们在函数中传引用类型的时候,其实也是这样的,我们只是把这个指针传进去了。

 

以上是关于javascript函数传参的思考的主要内容,如果未能解决你的问题,请参考以下文章

函数中传值跟传参的区别?

javascript---传参:不能传递引用类型

shell程序传参和main函数传参的区别

Javascript 之《函数传参到底是值传递还是引用传递》

Python函数传参的方式

python函数 传参的多种方式 解读