JavaScript天气App条件语句多值判断异常:输入Winter输出错误
问题排查与修复
错误根源
你的代码里第一个if条件的逻辑判断写法错误:
if(weather==="Summer" || "summer")
这里的|| "summer"部分,非空字符串在JavaScript里会被判定为true,导致不管weather输入什么,这个条件永远成立,第一个分支会被优先执行——这就是输入Winter却输出"Wear Cap"的原因。
同样的错误也出现在第三个else if的(weather=== "Rainy" || "rainy")判断里。
修复方案
提供两种实用修复方式:
方式1:补全完整判断条件
把逻辑或的两边都写成完整的变量比较语句:
// Question: // Write a weather app if Summer=>Wear Cap Winter=>Wear a cool Jacket Rainy=> Oh! You need to carry an Umbrella // GuideLines console.log("Welcome to the Weather app \n") console.log("Kindly Tell What Kind of weather you are experiencing \n") console.log("Type: Rainy or rainy if raining \n") console.log("Type: Summer or summer if it is hot summer \n") console.log("Type: Winter or winter if it is cool freezy winter \n") // Taking Input let weather = prompt("What Kind of weather you are experiencing?") // Conditions if(weather === "Summer" || weather === "summer"){ console.log("Wear Cap") } else if(weather === "Winter" || weather === "winter"){ console.log("Wear a cool Jacket") }else if (weather === "Rainy" || weather === "rainy"){ console.log("Oh! You need to carry an Umbrella") }else { console.log("Hmm! It seems an invalid input. Kindly read the Guidelines") }
方式2:统一转换输入大小写(更简洁)
把用户输入的字符串统一转为小写,只需要判断一次即可,避免重复写大小写分支:
// Question: // Write a weather app if Summer=>Wear Cap Winter=>Wear a cool Jacket Rainy=> Oh! You need to carry an Umbrella // GuideLines console.log("Welcome to the Weather app \n") console.log("Kindly Tell What Kind of weather you are experiencing \n") console.log("Type: Rainy or rainy if raining \n") console.log("Type: Summer or summer if it is hot summer \n") console.log("Type: Winter or winter if it is cool freezy winter \n") // Taking Input let weather = prompt("What Kind of weather you are experiencing?").toLowerCase(); // Conditions if(weather === "summer"){ console.log("Wear Cap") } else if(weather === "winter"){ console.log("Wear a cool Jacket") }else if (weather === "rainy"){ console.log("Oh! You need to carry an Umbrella") }else { console.log("Hmm! It seems an invalid input. Kindly read the Guidelines") }
这种写法更简洁,也不容易出错,推荐使用。
关键提醒
JavaScript里,非空字符串、非零数字这类值会被视为真值,单独放在逻辑判断里会直接返回true,这是这次出错的核心原因。以后写条件判断时,要确保逻辑或/逻辑与的两边都是完整的判断表达式。
内容的提问来源于stack exchange,提问作者Pradyot Sinha
相关产品推荐
相关产品推荐

