首页 > 解决方案 > 一旦在 JS 函数中达到某个值,如何停止递增?

问题描述

我试图让我的增量运算符在达到 50 后停止添加 +10,而我对如何在我的函数中建立这一点感到困惑。

class Vampire {
  constructor(name, otherPet){
    this.name = name;
    this.pet = otherPet || "bat";
    this.thirsty = true;
    this.ouncesDrank = 0;
  }
  drink(ouncesDrank){
    this.thirsty = false;
    this.ouncesDrank += 10;
    if(ouncesDrank >= 50){
      return 'I\'m too full to drink anymore!';
    }
  }

};

这是有关该功能的测试文件内容:

it('should be full after drinking 50 ounces', function() {
    var vampire = new Vampire('Javi');

    vampire.drink();

    assert.equal(vampire.ouncesDrank, 10);

    vampire.drink();

    assert.equal(vampire.ouncesDrank, 20);

    vampire.drink();

    assert.equal(vampire.ouncesDrank, 30);

    vampire.drink();

    assert.equal(vampire.ouncesDrank, 40);

    vampire.drink();

    assert.equal(vampire.ouncesDrank, 50);

    vampire.drink();

    assert.equal(vampire.ouncesDrank, 50);

    assert.equal(vampire.drink(), 'I\'m too full to drink anymore!');
  });
});

这是我的错误信息:

1 次失败

  1. 吸血鬼喝完 50 盎司后应该是饱的:

    AssertionError:预期 60 等于 50

    • 预期 - 实际

    -60 +50

标签: javascriptfunction

解决方案


您应该首先进行检查,只有在确定时才进行添加。

其次,您在条件中引用了一个全局变量if,因为您忘记了this.前缀

所以改变:

    this.ouncesDrank += 10;
    if(ouncesDrank >= 50){
      return 'I\'m too full to drink anymore!';
    }

    if(this.ouncesDrank >= 50){
      return 'I\'m too full to drink anymore!';
    }
    this.ouncesDrank += 10;

推荐阅读