首页 >web前端 >js教程 >基元、函数和 WTH 值不会更新

基元、函数和 WTH 值不会更新

王林
王林原创
2024-08-14 12:33:39904浏览

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