参照Python代码编写的JavaScript函数行为不符,请求技术排查
JavaScript条件判断逻辑错误导致运行结果不符合预期的解决方法
你的JavaScript代码运行结果不符合预期,核心问题是条件判断的逻辑写法错误,导致所有语言都会进入第一个if分支。
错误原因分析
你写的if(lang == "python" || "perl")不符合JavaScript的逻辑运算规则:
逻辑或运算符||的两侧必须都是完整的布尔表达式。而"perl"是一个非空字符串,在JS中会被强制转换为true,因此不管lang的值是什么,整个条件都会被判定为true,后续的else if分支永远不会执行。
两种修正方案
方案1:完整的逻辑或判断
和Python的逻辑对应,每个条件都明确判断lang的值:
const languages = ['python', 'perl', 'c', 'java']; for (let lang of languages) { if(lang == "python" || lang == "perl") { console.log(`${lang} need interpreter`); } else if (lang == "c" || lang == "java") { console.log(`${lang} need compiler`); } else { console.log("Not a support language."); } }
方案2:使用数组includes方法(更贴近Python的in写法)
利用JavaScript数组的includes方法直接检查元素是否在目标数组中,代码更简洁易读:
const languages = ['python', 'perl', 'c', 'java']; for (let lang of languages) { if(['python', 'perl'].includes(lang)) { console.log(`${lang} need interpreter`); } else if (['c', 'java'].includes(lang)) { console.log(`${lang} need compiler`); } else { console.log("Not a support language."); } }
以上两种写法都能得到和你提供的Python代码一致的输出结果。
内容的提问来源于stack exchange,提问作者Choiman
相关产品推荐
相关产品推荐

