javascript,if条件优化



我想改进不止一个"if和else if";。我有下面提到的条件,但我很恼火,因为我做了太多的"重复";。我该怎么解决这个问题?

const locale = window.location.origin;
const pathName = window.location.pathname;
let lang = pathName.toString().split("/")[1];
if (lang === "")
lang = "tr"
else if (lang === "en")
lang = "en"
else if (lang === "ar")
lang = "ar"
else if (lang !== "tr" || "en" || "ar")
lang = localStorage.getItem('VueAppLanguage')
console.log(lang)
const res = await axios.get(locale + '/' + lang + '/categories')
  1. 如果pathName.toString().split("/")[1]为空,则设置"tr〃;作为默认值
  2. 检查lang是否为任何标准语言
const locale = window.location.origin;
const pathName = window.location.pathname;
let lang = pathName.toString().split("/")[1] || "tr";       // 1
let noStandardLanguage = !["tr","en","ar"].includes(lang);  // 2
if (noStandardLanguage)
lang = localStorage.getItem('VueAppLanguage')
console.log(lang)
const res = await axios.get(locale + '/' + lang + '/categories')

您可以使用默认值并对照已知语言进行检查。

lang ||= "tr";
if (!['ar', 'en', 'tr'].includes(lang)) lang = localStorage.getItem('VueAppLanguage');

表达式

lang !== "tr" || "en" || "ar"

没有像预期的那样工作,因为比较

lang !== "tr"

只检查第一个字符串,从不检查另一个字符串进行比较。

逻辑OR||检查的值是左手边(lhs(是truthy,类似于非空字符串或其他字符串(请参阅链接(,并且如果lhs是falsy(与truthy相反(,则仅取下一个值。

为了比较一个值列表(这里是一个数组(,可以使用Array#includes

最新更新