今天下午思考了一下调用函数的时候,是怎么样吧参数传给执行的函数。当值的类型不同的时候,又没有变化。
当参数的值是基本类型的时候,这个时候是按值传递的,这个肯定都是清楚的,但是当值是引用类型的时候,这个时候情况又是怎么样的啊。
当我们把一个对象当作参数的时候传递的时候,我们发现怎么运行funx函数,但是全局对象a变量也被修改了,这个时候有些迷惑。参数在传递的时候,不是通过值传递的么,为什么会修改外部环境中的对象的属性。发现这个好像是引用传递。但是,如果我们运行下面这样的函数的时候:
发现输出的结果并没有变成20,其实当函数的参数变成引用类型的时候,我们这个值就变了,我们都知道js的基本数据类型是保存在栈内存中,而引用类型却是保存在堆内存中的。当我们用一个变量指向这个引用类型的时候,其实变量并不是确定指向这个引用类型,而是一个指向这个引用类型所在内存的指针。当我们在函数中传引用类型的时候,其实也是这样的,我们只是把这个指针传进去了。
时间: 2024-10-17 18:33:05