你能解释一下为什么这不起作用吗?

时间:2017-07-02 18:47:03

标签: javascript

所以我试图制作一个能够拿走你所拥有的土豆的功能并给你一个农民作为回报。我用一个简单的函数创建它但现在当我想添加一些东西时,我只是复制粘贴相同的代码。所以我尝试制作一个能够完成所有工作的功能。

我不想要jQuery的答案。我还没有真正了解它的工作方式。

这是调用该函数的HTML:

<button onClick="buy(autoFarmer, defaultAutoFarmerPrice, potatoes)" id="buyautofarmer">Buy Auto Farmer</button>

这是JavaScript:

var potatoes = 0,
    autoFarmer = 0,
    defaultAutoFarmerPrice = 17;

function buy(obj, price, potatoes) {
    if (potatoes > price) {
        obj++;
        console.log(obj);
    }
}

4 个答案:

答案 0 :(得分:0)

您的代码按预期工作,没有错误。你发送土豆为0,价格为17。 仅当potatoes > price时,控制台日志才会在输出中写入,而现在情况并非如此。

答案 1 :(得分:0)

代码有效..只需将土豆设置为大于价格,警报就会启动

&#13;
&#13;
var potatoes = 18,
    autoFarmer = 0,
    defaultAutoFarmerPrice = 17;

function buy(obj, price, potatoes) {
    if (potatoes > price) {
        obj++;
        alert(obj);
    }
}
&#13;
<button onClick="buy(autoFarmer, defaultAutoFarmerPrice, potatoes)" id="buyautofarmer">Buy Auto Farmer</button>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

这是代码的输出

https://plnkr.co/edit/9UuhG5q82OvVlrOG2UXw?p=preview

var potatoes = 0, 
    autoFarmer = 0, 
    defaultAutoFarmerPrice = 17;

function buy(obj, price, potatoes) {
    document.querySelector('#output').value += '\nobj = ' + obj;
    document.querySelector('#output').value += '\nprice = ' + price;
    document.querySelector('#output').value += '\npotatoes = ' + potatoes;

    if (potatoes > price) {
        obj++;
        console.log(obj);
        document.querySelector('#output').value += '\nobj = ' + obj;
    }
}

继续点击按钮,您可以看到打印的值。

您应该学习如何使用调试器,您可以单步执行代码并查看每个步骤的值。

答案 3 :(得分:0)

Js原语按值传递。因此,增加 obj 会增加 obj ,但不会增加 autoFarmer 。可能的解决方案是使用对象:

var potatoes = {value:0},
autoFarmer ={value: 0,price:17};

function buy(obj, potatoes) {
  if (potatoes.value > obj.price) {
    obj.value++;
    console.log(obj.value);
  }
}

buy(autoFarmer,potatoes);