【发布时间】:2013-11-10 23:47:57
【问题描述】:
我正在尝试编写一个执行以下操作的简单程序:
构建一个名为 changePowerTotal 的函数声明,其中包含:
当前产生的总功率(一个数字) 生成器 ID(数字) 生成器的新状态(表示“开”或“关”的字符串) 以及该发电机产生的电量(一个数字) 你的函数应该:
返回新的总发电量 以下列格式提醒技术人员 开启:
2 号发电机现在启动,增加了 62 兆瓦,总共 62 兆瓦! 或关闭:
2 号发电机现在关闭,移除 62 兆瓦,总共 0 兆瓦!
目前我的解决方案如下:
var generatorId = 2;
var status = "off";
var totalCurrentPower = 62;
var powerProduced = 62;
function changePowerTotal (totalCurrentPower, generatorId, status, powerProduced){
if(status = "off"){
var offPowerTotal = totalCurrentPower - powerProduced;
alert('Generator #' + generatorId + ' is now ' + status + ' , removing ' + powerProduced + 'mw, for a total of ' + newPowerTotal + 'MW!');
return offPowerTotal;
}
else {
var onPowerTotal = totalCurrentPower + powerProduced;
alert('Generator #' + generatorId + ' is now ' + status + ' , adding ' + powerProduced + 'mw, for a total of ' + newPowerTotal + 'MW!');
return onPowerTotal;
}
}
问题在于这并没有引发警报,对我这个新手来说更糟糕的是,它不会在 javascript 控制台中产生错误。我做错了什么?
如果我分解它并将警报中的所有变量分配为全局变量,然后发出警报,它就可以工作(见下文)。这让我相信它与我函数中的 if/else 有关。
var generatorId = 2; var状态=“关闭”; var totalCurrentPower = 62; var powerProduced = 62; newPowerTotal = 0;
alert('Generator #' + generatorId + ' 现在是 ' + status + ' ,移除 ' + powerProduced + 'mw,总共是 ' + newPowerTotal + 'MW!');
任何帮助将不胜感激。我也尝试过删除退货并留下警报。这似乎没有帮助。
【问题讨论】:
-
===比==更好用,因为它也会检查类型。===基本上意味着完全等于。 -
您正在分配
offPowerTotal,但随后在下一行使用newPowerTotal。 -
您真的要检查
if else中的布尔条件吗?因为您的if条件将始终为真!