首頁  >  文章  >  web前端  >  基元、函數和 WTH 值不會更新

基元、函數和 WTH 值不會更新

王林
王林原創
2024-08-14 12:33:39870瀏覽

Primitives, Functions, and WTH The Value won

我在基礎知識上做了一些工作,遇到了這個問題,我憑直覺知道,但從未詳細探索過。我沒有理由不深入了解 JavaScript 如何處理原語。

這是迄今為止最簡單的例子。在這裡,即使我呼叫add3和remove1函數,myPointsvariable也不會更新。

let myPoints = 3;

function add3(points) {
 points += 3;
}

function remove1(points) {
  points--;
}

add3(myPoints);
remove1(myPoints);

console.log(myPoints) // 3

以下是使這項工作得以實現的核心概念:

  1. 以數值傳遞:
    在 JavaScript 中,當您將原始值(如數字)傳遞給函數時,它們是按值傳遞的。這意味著創建值的副本並將其傳遞給函數,而不是原始變數本身。

  2. 功能範圍:
    函數內部定義的變數具有函數作用域,這意味著它們只能在該函數內存取。

  3. 傳回值:
    如果要在函數外部使用結果,JavaScript 中的函數需要明確傳回一個值。

以下是 myPoints 沒有變化的原因:

  1. 當我呼叫 add3(myPoints) 時,myPoints (3) 值的副本將傳遞給該函數。
  2. 在函數內部,points 是一個局部變量,它會增加到 6。
  3. 但是,此變更僅影響本地點變量,而不影響原始 myPoints。
  4. 函數不會傳回新值,因此結果不會儲存在任何地方。
  5. 原來的myPoints保持不變。

要解決這個問題,我有兩個主要選擇:

  1. 傳回新值並重新賦值:
function add3(points) { 
    return points + 3;
}

myPoints = add3(myPoints);
  1. 透過引用傳遞變數(使用物件):
let myPoints = { value: 3 };

function add3(pointsObj) { 
    pointsObj.value += 3;
}

add3(myPoints);
console.log(myPoints.value); // Now it's 6

以上是基元、函數和 WTH 值不會更新的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn