js--变量的复制与函数参数的传递
2017-08-23 23:50
239 查看
代码1.
这时页面输出结果为:5.这里大家肯定觉得没什么问题,那么请看代码2.
代码2:
这个时候大家脑海中闪过的第一个答案肯定是‘关羽’。恭喜大家,回答错误。正确答案是:吕布。
为什么?为什么?这不符合逻辑啊?
还请大家听我继续唠叨唠叨。
基本数据类型:包括str、num、boolean、null、undefined
引用类型 :就是对象。包括object、Array、function、date
基本类型的复制,相当于建立一个副本。改变副本中的数据,对前者没有任何影响。引用类型的复制不一样。引用数据类型的复制相当于创建一个影子副本,两者中任何一个有数据变化,另一个也会产生相应变化。(如果大家想要更深入了解其中的原因,可以去了解后台的内存分配机制)
代码3
第一个输出结果为6.第二个输出结果为5;
为什么同样是输出a,结果为什么不一样?把a传入到函数后,a会重新赋值为6,那么最终输出结果不都应该是6吗?
将变量传入函数相当于复制一个变量,然后把这个复制的变量传入到函数中。我们的关注点在与这个复制变量的值的变化是否会影响本体变量。这就涉及到上面所讲的基本数据类型和引用数据类型复制的相关知识。a是一个数字类变量,它的复制对象跟它之间没有任何联系。在函数内部改变a的值并不会改变函数外a的值。
我们来试一下对象。
var a = 5; var b = a; b = 6; alert(a);
这时页面输出结果为:5.这里大家肯定觉得没什么问题,那么请看代码2.
代码2:
var obj1 = { name:"关羽", weapon: "青龙偃月刀", horse:"赤兔马" } 4000 var obj2 = obj1; obj2.name = "吕布"; alert(obj1.name);
这个时候大家脑海中闪过的第一个答案肯定是‘关羽’。恭喜大家,回答错误。正确答案是:吕布。
为什么?为什么?这不符合逻辑啊?
还请大家听我继续唠叨唠叨。
基本数据类型:包括str、num、boolean、null、undefined
引用类型 :就是对象。包括object、Array、function、date
基本类型的复制,相当于建立一个副本。改变副本中的数据,对前者没有任何影响。引用类型的复制不一样。引用数据类型的复制相当于创建一个影子副本,两者中任何一个有数据变化,另一个也会产生相应变化。(如果大家想要更深入了解其中的原因,可以去了解后台的内存分配机制)
代码3
var a = 5; function num(x) { x = 6; alert(x); } num(a); alert(a);
第一个输出结果为6.第二个输出结果为5;
为什么同样是输出a,结果为什么不一样?把a传入到函数后,a会重新赋值为6,那么最终输出结果不都应该是6吗?
将变量传入函数相当于复制一个变量,然后把这个复制的变量传入到函数中。我们的关注点在与这个复制变量的值的变化是否会影响本体变量。这就涉及到上面所讲的基本数据类型和引用数据类型复制的相关知识。a是一个数字类变量,它的复制对象跟它之间没有任何联系。在函数内部改变a的值并不会改变函数外a的值。
我们来试一下对象。
var obj1 = { name:"关羽", weapon: "青龙偃月刀", horse:"赤兔马" } function obj(a) { a.name = "吕布"; alert(a.name); } obj(obj1) alert(obj1.name); 最后的输出结果都是吕布。
相关文章推荐
- js 基本类型和引用类型 变量复制 参数传递
- JS变量复制和参数传递
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
- 83 js 如何正确传递DOM元素的指针 选择器内参数为变量 论js函数的简化 seajs用法
- 17周---项目1-体会函数参数传递---变量的交换
- JS得到地址栏传递参数的函数
- JS变量传递参数是按值传递还是按引用传递
- JS数值类型、变量复制、函数传参
- 参数的传递方式、变量的作用域、变量的生存期、内部函数和外部函数、编译预处理命令、条件编译
- 不使用引用和全局变量实现函数参数传递
- html中的button按钮调用js函数和提交表单传递参数
- js函数中参数的传递
- js中函数参数是按值传递的
- JS中setInterval、setTimeout不能传递带参数的函数的解决办法
- 像js函数中传递对象参数
- 第6章创建函数-----------(在函数中使用变量、向函数传递参数、在函数中处理变量、关键字local)
- JS中setInterval、setTimeout不能传递带参数的函数的解决方法
- 【08】js函数中参数的传递