我想做类似的事情
if(something.val() == 'string1')
{
something.val('string2');
}
else if(something.val() == 'string2')
{
something.val('string1')
}
但是在一行代码中。我不太记得它是如何完成的,但它涉及问号和冒号……
原文由 Bojangles 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想做类似的事情
if(something.val() == 'string1')
{
something.val('string2');
}
else if(something.val() == 'string2')
{
something.val('string1')
}
但是在一行代码中。我不太记得它是如何完成的,但它涉及问号和冒号……
原文由 Bojangles 发布,翻译遵循 CC BY-SA 4.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 许可协议
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
6 回答1.1k 阅读
尝试:
它被称为三元表达式。