我在基礎知識上做了一些工作,遇到了這個問題,我憑直覺知道,但從未詳細探索過。我沒有理由不深入了解 JavaScript 如何處理原語。
這是迄今為止最簡單的例子。在這裡,即使我呼叫add3和remove1函數,myPointsvariable也不會更新。
let myPoints = 3; function add3(points) { points += 3; } function remove1(points) { points--; } add3(myPoints); remove1(myPoints); console.log(myPoints) // 3
以下是使這項工作得以實現的核心概念:
以數值傳遞:
在 JavaScript 中,當您將原始值(如數字)傳遞給函數時,它們是按值傳遞的。這意味著創建值的副本並將其傳遞給函數,而不是原始變數本身。
功能範圍:
函數內部定義的變數具有函數作用域,這意味著它們只能在該函數內存取。
傳回值:
如果要在函數外部使用結果,JavaScript 中的函數需要明確傳回一個值。
以下是 myPoints 沒有變化的原因:
要解決這個問題,我有兩個主要選擇:
function add3(points) { return points + 3; } myPoints = add3(myPoints);
let myPoints = { value: 3 }; function add3(pointsObj) { pointsObj.value += 3; } add3(myPoints); console.log(myPoints.value); // Now it's 6
以上是基元、函數和 WTH 值不會更新的詳細內容。更多資訊請關注PHP中文網其他相關文章!