javascript - 一旦在 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 次失败
吸血鬼喝完 50 盎司后应该是饱的:
AssertionError:预期 60 等于 50
- 预期 - 实际
-60 +50
解决方案
您应该首先进行检查,只有在确定时才进行添加。
其次,您在条件中引用了一个全局变量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;
推荐阅读
- java - 如何使用 Retrofit2 在 API 请求中传递原始数据
- android - beginBatchEdit 在非活动 InputConnection 上,在失去对 editText 的关注后,再次触发 editText onchange
- swift - 导航控制器作为根视图控制器仅显示黑屏
- python - 如何在 Windows 上将罗技 Webcam C922 pro 与 python 链接
- c++ - 在 Bazel 中使用 __FILE__ 会导致不确定的构建
- kdb - 根据某些条件提取 kdb 列表值
- javascript - 如何将字母/单词/字符添加到javascript中字符串中的特殊单词?
- python - 为什么我的代码在使用 if else 条件创建 2x3 矩阵时无法格式化
- python-3.x - 将元组列表写入多个 CSV 文件 [Python]
- node.js - lambda API 中的 ValidationException