简写javascript if else声明

时间:2014-09-12 13:59:31

标签: javascript

if (lookfor.done == '1') {
    lookfor.done = '0';
} else if (lookfor.done == '0'){
    lookfor.done = '1';
}

我如何在javascript中写一个更清晰的上述简写?

9 个答案:

答案 0 :(得分:10)

您可以使用ternary operator

lookfor.done = (lookfor.done == '1') ? '0' : '1';

(不考虑既不是'1'也不是'0'的值。如果你需要那些,你的双if可能是最好的解决方案)

如果你使用实际的整数而不是字符串,你可以使用按位XOR速记赋值:

lookfor.done = 0/1;
lookfor.done ^= 1;

如果你需要琴弦,你仍然可以通过使用一些难以理解的魔法来缩短:

lookfor.done = +!+lookfor.done+""; // cast: number, boolean flip, number, string

也许更干净:

lookfor.done = String(1^lookfor.done); // XOR flip automatically casts to number

答案 1 :(得分:1)

完全干净的解决方案:

lookfor.done = +!+lookfor.done+"";

每个人都会知道你的意思。

但是真的。带花括号的if语句的默认语法完全没问题。如果我说没有"清洁"溶液

代码说明,因为有人要求:

首先,+之前的lookfor将值转换为数字。然后,!否定它(!1 = false,!0 = true)。之前的+会将结果强制转换为数字(true => 1,false => 0)。 +""附加一个空字符串并将值强制转换回字符串。

注意:实际上不要使用它。如初。

答案 2 :(得分:0)

lookfor.done = lookfor.done == '1' ? '0' : '1';

答案 3 :(得分:0)

使用这个简写:

lookfor.done =lookfor.done == '0' ? '1':'0'

boolean会更加清晰:

lookfor.done=true;

lookfor.done=!lookfor.done;

答案 4 :(得分:0)

您正在寻找的是三元语句,它有多种语言版本。

lookfor.done === '1' ? lookfor.done = '0' : lookfor.done = '1';

当它不等于任何时候你应该有一个后备......但为什么不在这里使用布尔?如果你这样做,你可以简单地否定这样的价值:

lookfor.done = !lookfor.done;

这看起来就像你实际做的那样。

答案 5 :(得分:0)

考虑到它不是10的情况:

lookfor.done = (lookfor.done == '1') ? '0' : (lookfor.done == '0') ? '1' : lookfor.done;

但看起来很难看。

答案 6 :(得分:0)

您可以使用unary运算符+

var lookfor.done = !!your_value_here;
lookfor.done = !lookfor.done;
lookfor.done = +lookfor.done;

它的作用是将值integer变为boolean并将其转换为!!

  • 然后切换boolean值。

  • 然后再次将其解析为integer

答案 7 :(得分:0)

我不是一个代码高尔夫球手,但是使用三元运算符,我得到了这个:

lookfor.done = lookfor.done * 1 ? '0' : '1';

lookfor.done * 1将您的字符串转换为数字:0表示“0”,1表示“1”,但它也适用于其他数字。然后,三元运算符将其评估为布尔值(false表示0,true表示其他任何内容)并设置适当的值,并按照您的要求将其分配回lookfor.done。< / p>

但我不得不怀疑:这是否比if声明更清晰?它将分配,而不是基于lookfor.done是'1'还是'0',而是基于它是否转换为数字等于零。严格来说,这与你在问题中所做的不一样,尽管它可能满足你的需求。

答案 8 :(得分:0)

您可以使用异或(XOR)操作(尽管JavaScript只有按位运算符)

 lookfor.done = lookfor.done ^ 1