gpt4 book ai didi

javascript - 简单参数 Javascript 函数

转载 作者:行者123 更新时间:2023-11-29 18:11:47 25 4
gpt4 key购买 nike

我已经有一段时间没有玩过 Javascript 了,我在这里摸不着头脑......

我有一个我定义的对象:

var attrs = {
"charStats": {
"hp": 500000,
"speed": 1,
"juice": 0,
"nova": 0,
"special": 1,
"experience": 0,
"level": 1
}
};

以及用于备份和显示数据的 HTML:

<div class="block">
<h2>Character Statistics</h2>
<ul class="statistics">
<li>HP: <span class="hp"></span></li>
<li>Speed: <span class="speed"></span></li>
<li>Juice: <span class="juice"></span></li>
<li>Special: <span class="special"></span></li>
<li>Nova: <span class="nova"></span></li>
<li>Experience: <span class="experience"></span></li>
<li>Level: <span class="level"></span></li>
</ul>
</div>

<div class="block">
<button class="addExp">Add Experience</button>
</div>

<button class="updateStats">Update</button>

所以我遇到的问题是我的功能之一,就像这样:

function addToStats(amount){
attrs.charStats.experience += amount;
}
$('.addExp').on('click', function(){
addToStats(15);
});

但出于某种原因试图使其更具可扩展性,设置2个参数似乎根本不起作用......

function addToStats(stat, amount){
stat += amount;
}
$('.addExp').on('click', function(){
addToStats(attrs.charStats.experience, 15);
});

我到底错过了什么?

工作: http://jsfiddle.net/wu61owt6/

不工作: http://jsfiddle.net/wu61owt6/1/

最佳答案

attrs.charStats.experience 只是一个数字,所以当您这样做时:

addToStats(attrs.charStats.experience, 15);

就好像你只是在这样做:

addToStats(0, 15);

javascript 中的原始值(如数字)是按值传递的。它们不传递指向对象字段的指针或引用,它们只传递值,因此当只传递数字时无法更改原始属性。


您可以将对象引用传递给父对象。所以,你可以这样做:

function addToStats(obj, field, val) {
obj[field] += val;
}

addToStats(attrs.charStats, "experience", 15);

关于javascript - 简单参数 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26807598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com