修改凌乱的JS代码,三元运算符

时间:2012-10-31 12:48:43

标签: javascript keyboard

我想修改一个代码,这样我就可以添加一个"虚拟吉他音符"每当用户按下键盘键时。问题是我不理解以下代码:

        (b = c) ? b = "number" 
        == typeof b.which ? 3 : "number" 
        == typeof b.keyCode ? 2 : "number" 
        == typeof b.charCode ? 4 : 0 
        : (b = window.event, b = "number" == typeof b.keyCode ? 1 : 0); 

        0 != b ? 
        ("number" == typeof c.modifiers ? a += "var c=f.modifiers;" 
        : "boolean" == typeof c.shiftKey ? a += "var c=f.shiftKey*4+f.ctrlKey*2+f.altKey;" 
        : Stop(), c.srcElement ? a += "var d=f.srcElement;" 
        : c.target ? a += "var d=f.target;" 
        : St()) 
        : St(); 

        DFunct || (d=10, f=11);

据我所知,最后一行转换为:

        if(!DFunct){
           d=10;
           f=11;
        }

我需要使用简单的if else语句来制作它,这样我就可以根据按下的值进行音符播放。

1 个答案:

答案 0 :(得分:1)

首先:

b = c;

if ( c ) {

    if ( typeof b.which === "number" ) {

        b = 3;

    } else {

        if ( typeof b.keyCode === "number" ) {

            b = 2;

        } else {

            if ( typeof b.charCode === "number" ) {

                b = 4;

            } else {

                b = 0;

            }

        }

    }

} else {

    b = window.event;
    b = typeof b.keyCode === "number" ? 1 : 0;

}

第二

if ( b !== 0 ) {

    if ( typeof c.modifiers === "number" ) {

        a += "var c=f.modifiers;";

    } else {

        if ( typeof c.shiftKey === "boolean" ) {

            a += "var c=f.shiftKey*4+f.ctrlKey*2+f.altKey;";

        } else {

            Stop();

            if ( c.srcElement ) {

                a += "var d=f.srcElement;";

            } else {

                if ( c.target ) {

                    a += "var d=f.target;";

                } else {

                    St();

                }

            }

        }

}​ else St();