我有一個這樣的腳本:
function changeValue(x){
x = 30;
}
let a = 3;
changeValue(a);
console.log(a);
上面的代碼輸出 3,但預期的輸出是 30。
現在我知道為什么會發生這種情況,但是如何修改我的代碼,以便在 changeValue 函式結束后所做的更改不會恢復?
我已經讀到 JS 中沒有顯式指標,我不想使用全域變數名稱或使用物件方法來更改值。有沒有其他方法可以解決問題?
謝謝
uj5u.com熱心網友回復:
最好的方法是使用 return,因為x它不是一個物件,它只是一個變數。它在函式之后被丟棄。
使用回傳:
function changeValue(x){
return 30;
}
let a = changeValue(3);
changeValue(a);
console.log("Output Is:", a);
uj5u.com熱心網友回復:
在 JavaScript 中,所有原始型別(整數、浮點數等)都是按值傳遞的,因此正如其他人所說,對于您的特定用例,最好像這樣回傳值:
function returnValue(x) {
return x * 10
}
let a = 3;
a = returnValue(a);
console.log(a);
但是,如果您真的想更改引數而不回傳,則需要通過參考傳遞。正如我上面所說,原始資料型別不可能,但物件可能:
function changeValue(x) {
x.value = x.value * 10;
}
let a = { value: 3 };
changeValue(a);
console.log(a.value);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512643.html
標籤:javascript功能
上一篇:創建一個更改特定列中的行值的函式
