首页 > 代码库 > 再次学习javascript中的参数传递
再次学习javascript中的参数传递
javascript中的所有函数的参数传递都是按照值传递的,做了下面测试:
function addTen(num){ num +=10; return num; } var count = 20; var result = addTen(count); alert(cont); //20 alert(result); //30好吧,上面只是做了基本类型的传递,再做个引用类型的传递看看:
function setName(obj){ obj.name="Mark"; } var person = new Object(); setName(person); alert(person.name); //Mark这样看起来是引用传递,不是值传递,那么再做个测试:
function setName(obj){ obj.name="Mark"; obj = new Object(); obj.name = "David"; } var person = new Object(); setName(person); alert(person.name); //Mark这个例子与前面一个例子的唯一的区别就是在setName()的函数后面增加 了两行代码:一行代码为obj重新定义了个对象,另一行代码为该对象定义了一个带有不同值的name属性。在把persion传递给setName()函数后,其name属性被设置为Mark,然后将一个新对象赋值给obj,同时其name属性设置为David。如果person是按照引用传递的,那么person就会自动被修改为指向其name属性值为David的新对象。但是,当接下再访问person.name时,显示的值仍是Mark。这说明即使在函数内部修改了参数的值,但原始的引用仍然保持未变。实际上,当在函数内部重写obj时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完后被销毁。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。