Javascript 通过引用将变量传递给函数,并更改其值?

Javascript 通过引用将变量传递给函数,并更改其值?,javascript,pass-by-reference,Javascript,Pass By Reference,我有一个变量,我把它传递给一个函数,并返回它的更新值。语法看起来非常类似于: var myName = 'hello all.'; FuncUpperCase(myName); function FuncUpperCase(myName) { myName = myName.toUpperCase(); return myName; } 但是变量myName似乎没有使用toUpperCase()中的值进行修改 注意:我不想写var newName=FuncUpperCa

我有一个变量,我把它传递给一个函数,并返回它的更新值。语法看起来非常类似于:

var myName = 'hello all.';

FuncUpperCase(myName);

function FuncUpperCase(myName) {
     myName = myName.toUpperCase();
     return myName;
}
但是变量
myName
似乎没有使用
toUpperCase()
中的值进行修改


注意:我不想写
var newName=FuncUpperCase(myName)
,因为我不喜欢这种语法。

这可能会回答您的问题:

或者,传递一个对象而不是字符串

var something={};
something.word=“word”;
var allcaps=function(inp){inp.word=inp.word.toUpperCase();};
所有的帽子(某物);
//有些东西。单词现在已经改变了
警惕的(某物、单词);

在JavaScript中,所有内容都是按值传递的。这意味着,如果为函数中的给定参数重新指定值,则不会在给定函数的范围之外修改该值。要理解的另一件重要事情是对象引用的值是如何工作的:如果你将一个对象传递给一个函数,它也是通过值给出的,但是如果你访问这个对象的一个属性,那么实际的对象也会在函数之外被修改,而不是值(也就是说,作为对象引用的值)


最后,您必须将一个对象传递给您的函数,并修改它的一个属性,使其在外部持久化

function setToUpperCase(object, key) {
    object[key] = ('' + object[key]).toUpperCase();
    return object[key];
}
然后像这样使用它:

var holder = { word: 'blah' };
setToUpperCase(holder, 'word');
console.log(holder.word); // BLAH

@Goodwine他希望字符串是大写的。他只是没有将返回的值放入var中,这就是它不起作用的原因。这不是那篇文章的翻版。这个解决方案听起来更像是“js风格”,所以我把它投了赞成票。谢谢,你的代码很好。现在扩展这个问题,Lowercase()key对象something(而不是key-value)如何遵循这个语法。请帮帮我@ĐìnhnhnhơnLê你应该提出一个新问题。@ììnhnhnhơnLê这篇文章回答了如何更改对象上的属性名称。你不能改变它。创建新属性并删除旧属性@很高兴为您提供帮助,欢迎来到Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。
一切按值传递
:false,在您的示例中,
holder
按引用传递…不,按值传递,正如我所说,值恰好是对对象的引用。尝试做
object={}它不会更改
对象
的值,但它会更改对
对象
的引用值。