如何影响传递给函数的字符串对象
How to affect string object passed to a function
这是一个非常非常基本的问题,但由于某种原因,我很难找到一个很好的参考。
假设我有这个JScript
代码在WSH
下运行:
function func(myStr) {
var res = "abc";
myStr = res;
}
function main() {
var myStr = new String();
WScript.Echo(myStr);
func(myStr);
WScript.Echo(myStr);
}
main();
I将String
对象传递给func
,期望func
设置对象的值。然而,func
使用operator =
,它复制内容,但生成一个新的引用
我回顾了这篇文章,我如何正确地克隆一个JavaScript对象?我找不到我要找的东西
我们有一个简单直接的解决方案吗?
最重要的是:对象是通过引用传递的。其他东西,比如字符串,数组,数字…按值传递
每次将字符串传递给函数时,只有其值的副本被传递给该函数(因此不要认为您的字符串对象是对象,也不要询问克隆)。但是任何指向原始变量的链接都会丢失。
另一方面,当你将对象传递给函数时,对象的地址(指针/引用)被传递给函数,所以它是内部和外部相同的变量。因此,函数内部对象发生的任何变化都会影响函数外部的对象。
现在,看一段类似的代码,但是传递了对象
var myObject = {};
myObject.txt = 'Foo';
console.log(myObject.txt);
func(myObject);
console.log(myObject.txt);
function func(obj) {
obj.txt = 'Hello World';
}
有两种方法
返回func
的值,如
var myStr = new String();
myStr = func();
其中func
需要更新以返回值(return res
)
或者你可以使用object但是你需要改变一些东西
function func(myStr) {
var res = "abc";
myStr.value = res;
}
function main() {
var myStr = {};
WScript.Echo(myStr.value);
func(myStr);
WScript.Echo(myStr.value);
}
main();
这样你的myStr
就是对那个对象的引用。我建议你读一读JS Objects
参考:
http://eloquentjavascript.net/06_object.html
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- jQuery中是否内置了任何字符串格式化函数
- JavaScript按钮/输入/函数,字符串反转
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 从带参数的字符串变量调用函数中的函数
- 是否可以像字符串一样/操作/函数
- 从字符串调用javascript函数
- jquery字符串变量上的每个函数
- 如何在只接受字符串值/文字的HTML属性中调用函数
- 将JSON字符串转换为函数参数
- 在Javascript中将字符串转换为函数
- 正在创建使用子字符串解析JSON数据的函数
- 是否可以在 ng-click 中调用函数字符串
- 用于查找函数字符串 javascript 的正则表达式
- Regex js解析函数字符串
- 是传递给函数(字符串或对象)的元素
- 如何在不使用eval()的情况下将完整的函数字符串转换为javascript函数
- javascript函数字符串slice
- 引用函数(字符串)javascript中的数组项
- JS regex从一个函数字符串中提取多行参数