了解三元运算符

Kri*_*ian 0 javascript ternary

我有以下代码:

c.m & 3 || (b |= 2, 
  65 <= a && 90 >= a ? a = 65
: 48 <= a && 57 >= a ? a = 48
: b & 1 ? 97 <= a && 122 >= a ? a = 65
: 197 == a || 229 == a ? b &= 5
: 192 <= a && 687 >= a ? a = 192
: 1536 <= a ? a = 1536
: 912 <= a ? a = 912
: 160 <= a ? a = 160
: 127 <= a ? b &= 5
: 33 <= a ? a = 59 
: b &= 5
: 48 > a ? b &= 5
: 65 > a ? a = 59
: 96 > a ? b &= 5
: 112 > a ? a = 96
: 187 > a ? b &= 5
: a = 59);
Run Code Online (Sandbox Code Playgroud)

我甚至很困惑从哪里开始.是|| 二元运算符?为什么一开始有逗号?我想了解这段代码是如何工作的,并使用常规if,else,任何提示重写它?谢谢!

Nie*_*sol 12

||运算符返回第一操作数,如果它是truthy,或第二个否则.&&相反:如果它是假的,则返回第一个操作数,否则返回第二个操作数.

a ? b : c是简写(function(a) {if(a) return b; else return c;}(a);(不完全是,但无论如何这是个主意).

,运算符计算两个操作数并返回第二.

考虑到所有这些,上面的代码变为:

if( !(k & 3)) {
    b |= 2;
    if( 65 <= a && 90 >= a)
        a = 65;
    else if( 48 <= a && 57 >= a)
        a = 48;
    else if( b & 1) {
        if( 97 <= a && 122 >= a)
            a = 65;
        else if( 197 == a || 229 == a)
            b &= 5;
        else if( 192 <= a && 687 >= a)
            a = 192;
        else if( 1536 <= a)
            a = 1536;
        else if( 912 <= a)
            a = 912;
        else if( 160 <= a)
            a = 106;
        else if( 127 <= a)
            b &= 5;
        else if( 33 <= 1)
            a = 59;
        else
            b &= 5;
    }
    else if( 48 > a)
        b &= 5;
    else if( 65 > a)
        a = 59;
    else if( 96 > a)
        b &= 5;
    else if( 112 > a)
        a = 96;
    else if( 187 > a)
        b &= 5;
    else
        a = 59;
}
Run Code Online (Sandbox Code Playgroud)

不过,我无法告诉你这是什么意思.这只是一堆数字被检查.a在多个范围内检查,并设置为特定值或b可能改为更改.对我来说这是一个巨大的混乱,它需要上下文才有意义.