- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JavaScript参数传递中值和引用的一种理解
值(value)和引用(reference)是各种编程语言老生常谈的话题,js也不例外。我将剖析一个例子的实际运行过程,跟大家分享我对js参数传递中的值和引用的理解。参考官网/en-US/docs/Web/JavaScript/Data_structures数据类型的两种分类,本文将这两种分类简称为基本类型(boolean, null, undefined, string, number, symbol)和object类型。首先,用一个example 演示参数传递的应用:var obj = {};obj.inner = 10;var num = 10;var str = Hello;var boo = true;var oth = null;var und = undefined;var sym = Symbol(foo);function passingobject(myobj){ myobj.inner = 1 + myobj.inner ; }function passingvalue(myvalue){ switch(typeof myvalue){ case number: myvalue = myvalue + 1; break; case string: myvalue = I am a new string now!; break; case boolean: myvalue= false; break; default: myvalue = Null, Undefined, or Symbol; } } console.log(before num = + num); // before num = 10 passingvalue(num); console.log(after num = + num); // after num = 10 console.log(before str = + str); // before str = Hello passingvalue(str); console.log(after str = + str); // after str = Hello console.log(before boo = + boo); // before boo = true passingvalue(boo); console.log(after boo = + boo); // after boo = false console.log(before oth = + oth); // before oth = null passingvalue(oth); console.log(after oth = + oth); // after oth = null console.log(before und = + und); // before und = undefined passingvalue(und); console.log(after und = + und); // after und = undefined console.log(sym); // Symbol(foo) passingvalue(sym); console.log(sym); // Symbol(foo) console.log(before obj.inner = + obj.inner); // before obj.inner = 10 passingobject(obj); // after obj.inner = 11 console.log(after obj.inner = + obj.inner);从example 1 的结果似乎可以总结出以下两条结论:1. 传递的数据类型为基本类型(number, string boolean, null, undefined, symbol),在参数传递过程中,函数内部对传递值的操作并不影响原始值。2. 传递的数据类型为object, 在参数传递过程中,函数内部对传递值的操作会导致原始值的改变。然而, 有没有其他特殊情况呢?有一种在stackoverflow讨论很火热的用法,跟结论二背道而行。example 2。例子引自:/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language 1 function changeStuff(a, b, c) 2 { 3 a = a * 10; 4 b.item = changed; 5 c = {item: changed}; 6 } 7 8 var num = 10; 9 va
文档评论(0)