高级if if javascript语句用于代码保护

时间:2013-03-20 09:39:58

标签: javascript optimization if-statement

我有一个问题,不是关于JS代码混淆(它不是真正的主题),而是为了理解JS if else else符号。

当我们在JS代码上使用混淆工具时,生成的代码包含如下语句:

(0xA6, 78.) <= 0x204 ? val : otherVal

我知道if Else语句和reduce版本。 在这个例子中,混淆工具使用其他十六进制数字的数字(对此可以)

但是符号:

( value , other value )

为什么要这样做,为了什么?

感谢您的帮助,了解这一点。

2 个答案:

答案 0 :(得分:3)

这是一个逗号运算符:

The javascript comma operator

Mozilla Comma Operator

答案 1 :(得分:1)

嗯,以逗号分隔的列表仅评估最右外的值,在这种情况下是数字78。它也可能看起来像

(0xA6, 42, 11, 78.)

它仍将评估为78(最后的小数点只是可选的)。第二个数字只是数字516的八进制版本。所以实际上这条线是

78 < 516 ? val : otherVal

这是一个用三元运算符编写的非常简单的条件,它也可以写成

if( 78 < 516 ) {
    // assign val somewhere
} else {
    // assign otherVal somewhere
}