我有一个问题,不是关于JS代码混淆的问题(这不是真正的主题),而是关于理解JS(如果不是其他符号)的问题。

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

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


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

但是符号:

( value , other value )


为什么这样做又能做什么呢?

感谢您的理解。

最佳答案

好吧,用逗号分隔的列表仅评估最右边的值,在这种情况下为数字78。它也可能看起来像

(0xA6, 42, 11, 78.)


并且仍将计算为78(末尾的小数点仅是可选的)。第二个数字只是数字516的八进制版本。所以实际上这条线是

78 < 516 ? val : otherVal


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

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

关于javascript - 如果在代码保护中使用javascript语句,则为高级,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15519897/

10-12 03:03