JavaScript中函数传入参数与外部变量绑定
来源:互联网 发布:js防水涂料施工工艺 编辑:程序博客网 时间:2024/06/06 01:21
最近在实现一些功能的时候,写了如下代码:
<span style="font-size:14px;">var nums = [1,2,3];function collect(nums){nums = [2,3,4,5];}collect(nums);alert(nums);</span>
我们所希冀的,按第一直觉,当然是希望alert出来的nums是[2,3,4,5]这个数组的内容。
但是非常抱歉,结果却是:
//1,2,3
这是为什么呢?
当我将代码写成这样:
<span style="font-size:14px;">var nums = [1,2,3];function collect(nums){nums = [2,3,4,5];}nums = collect(nums);alert(nums);</span>
就一点问题都没有了。
显而易见,问题就出现在所传入的nums中。
为什么经过了一段处理之后,我们传入的nums不能改变呢?
nums是一个数组,是一个对象,它所传入的应该是实参啊?为什么会修改不了呢?
各位看官,看到这里,请别急。
请你回想一下:为什么我们给函数传入的对象,能够被我们在函数内部改变呢?
因为我们所传入的变量,实际上只是对象的指针啊!
当我们调用这个指针修改对象的内容的时候,对象的内容当然能够被修改。
但是如果我们是直接给这个变量重新赋予一个新的数组、新的对象(如代码段1所示),变量与原来对象的联系就被割断了,于是就无法再获取到原来的对象了。
因此,我们千万不能用如下方式在函数内部修改对象:
<span style="font-size:14px;">nums = [2,3,4,5];</span>
如果确实需要在函数内部对变量重新赋值,请在原来基础上进行增加再删除的操作,或者为函数返回一个新的对象,用源对象接收,完成修改。
0 0
- JavaScript中函数传入参数与外部变量绑定
- javascript中动态绑定带参数的函数
- C中函数传入参数不确定问题
- js函数中传入的event参数
- C程序中外部变量与函数关系解惑
- C程序中外部变量与函数关系解惑
- C程序中外部变量与函数关系解惑
- JavaScript-bind()与函数绑定
- javascript动态绑定带参数的函数
- javascript中 Date的构造函数 传入规定外的参数的返回值是Invalid Date
- C 程序的外部变量与函数
- C 程序的外部变量与函数
- C 程序的外部变量与函数
- C 程序的外部变量与函数
- C 程序的外部变量与函数
- C 程序的外部变量与函数
- C 程序的外部变量与函数
- C 程序的外部变量与函数
- Yii 渲染与布局(渲染页面的两种方式)
- CVE-2015-2342 – Remote Code Execution within VMware vCenter
- C#操作Access类
- [LeetCode]Median of Two Sorted Arrays
- VS2015打开VS2010项目出现的问题解决方法
- JavaScript中函数传入参数与外部变量绑定
- Protobuf语言指南
- Ubuntu升级内核后启动VirtualBox虚拟机报错NS_ERROR_FAILURE
- Hibernate通过SQL查询常量时只能返回第一个字符的解决方法
- Javascript学习笔记
- 九度OJ 1000:计算a+b
- android-加载网络Gif和本地Gif
- Java 集合系列02之 Collection架构
- 利用spring 3.0+springMVC+dwr 3.0 实现一对一的无刷新聊天(一)