簡體   English   中英

通過引用將變量傳遞給Function,並更改其值?

[英]Pass variable to Function by reference, and change value it?

我有一個傳遞給函數的變量,並返回其更新后的值。 語法看起來非常類似於:

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();};

allcaps(something);

//something.word has now been changed
alert(something.word);

在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM