有什么方法可以使用一段 JavaScript 在两个字符串之间切换?

新手上路,请多包涵

我想做类似的事情

if(something.val() == 'string1')
{
     something.val('string2');
}
else if(something.val() == 'string2')
{
    something.val('string1')
}

但是在一行代码中。我不太记得它是如何完成的,但它涉及问号和冒号……

原文由 Bojangles 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 540
2 个回答

尝试:

 something.val(something.val() == 'string1' ? 'string2' : 'string1');

它被称为三元表达式。

原文由 Matthew Manela 发布,翻译遵循 CC BY-SA 3.0 许可协议

看,妈妈,没有三元运算符!

以下工作是因为 Javascript 短路布尔表达式。

如果 something == string1 则评估 string2 因为 string2 是一个 值,下一个表达式涉及 OR 运算,因此无需继续。停止并返回 string2

如果 something !== string1 那么它将跳过下一个操作数,因为如果它为假,则评估下一个操作数(使用 AND)没有意义。它将“跳转”到 OR 操作并返回 string1

 function toggleString(something, string1, string2) {
   return something == string1 && string2 || string1;
}

something.val(toggleString(something.val(), "string1", "string2"));

如果你想完成作业:

 function toggleValue(something, string1, string2) {
   something.val(something.val() == string1 && string2 || string1);
}

toggleValue(something, "string1", "string2"); // something is a jQuery collection

然而最后,我最终会使用三元运算符,因为其他程序员可能不清楚这个解决方案。如果您来自 Java 或其他语言,由于所有布尔运算符,您可能希望该函数返回一个布尔值。

原文由 Cristian Sanchez 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题