Boj*_*les 13 javascript jquery logic
我想做点什么
if(something.val() == 'string1')
{
something.val('string2');
}
else if(something.val() == 'string2')
{
something.val('string1')
}
Run Code Online (Sandbox Code Playgroud)
但是在一行代码中.我不记得它是如何完成的,但它涉及问号和冒号......
Mat*_*ela 29
尝试:
something.val(something.val() == 'string1' ? 'string2' : 'string1');
Run Code Online (Sandbox Code Playgroud)
它被称为三元表达式.
看马云,没有三元运营商!
以下是有效的,因为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"));
Run Code Online (Sandbox Code Playgroud)
如果你想完成任务:
function toggleValue(something, string1, string2) {
something.val(something.val() == string1 && string2 || string1);
}
toggleValue(something, "string1", "string2"); // something is a jQuery collection
Run Code Online (Sandbox Code Playgroud)
但最后,我最终会使用三元运算符,因为其他程序员可能不清楚这个解决方案.如果你来自Java或其他语言,你可能希望函数返回一个布尔值,因为所有的布尔运算符.
另一种使用对象属性的方法:
{ 'string1': 'string2', 'string2': 'string1' }[value]
Run Code Online (Sandbox Code Playgroud)
如问题所示:
something.val(
{ 'string1': 'string2', 'string2': 'string1' }[something.val()]
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17320 次 |
| 最近记录: |