我正在尝试创建一个函数,当输入在一组给定的范围内时返回特定的字符串。用例:我想根据给定城市的温度更改网页的颜色。我有一个函数,它接受一个数字并返回其中一种颜色变体。但是,它似乎总是返回“粉红色”。有帮助吗?
function colorTemperature(temperature){
if(temperature <= -10){
colorTemperatureResult = 'midnightblue';
}
if(temperature > 0 && temperature <= 10)
{
colorTemperatureResult = 'darkblue';
}
if(temperature > 10 && temperature <= 20)
{
colorTemperatureResult = 'royalblue';
}
if(temperature > 20 && temperature <= 30)
{
colorTemperatureResult = 'steelblue';
}
if(temperature > 30 && temperature <= 40)
{
colorTemperatureResult = 'deepskyblue';
}
if(temperature > 40 && temperature <= 50)
{
colorTemperatureResult = 'lightblue';
}
if(temperature > 50 && temperature <= 60)
{
colorTemperatureResult = 'lightyellow';
}
if(temperature > 60 && temperature <= 70)
{
colorTemperatureResult = 'lemonchiffron';
}
if(temperature > 70 && temperature <= 80)
{
colorTemperatureResult = 'khaki';
}
if(temperature > 80 && temperature <= 90)
{
colorTemperatureResult = 'orange';
}
if(temperature > 90 && temperature <= 100)
{
colorTemperatureResult = 'gold';
}
if(temperature >= 100)
{
colorTemperatureResult = 'orangered';
}
else {
colorTemperatureResult = 'pink';
}
return colorTemperatureResult;
}
此外,如果有更简单的方法可以在没有所有这些条件的情况下执行此功能,请告诉我。我知道输入正确传递,但无法找出逻辑中哪里出错了。
谢谢!
最佳答案
您的 if
表达式都没有 else if
来防止它们在继续执行时被不必要地求值。
将您的字符串分配从 colorTemperatureResult = 'whatever'
更改为 return 'whatever'
它将起作用。
但是您的代码不必要地复杂,您也可以完全消除 >
比较:
function colorTemperature(temperature) {
if(temperature <= -10) {
return 'midnightblue';
} else if(temperature <= 10) {
return 'darkblue';
} else if(temperature <= 20) {
return 'royalblue';
} else if(temperature <= 30) {
return 'steelblue';
} else if(temperature <= 100) {
// snip
} else if(temperature <= 110) {
return 'gold';
} else {
return 'orangered'
}
}
关于javascript - 找不到此 JS 函数中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36243884/