一般情况下,在JS中定义变量,是使用var、let、const

比如:var abc =1;

但如果你不希望别人看到你定义了一个变量abc,该怎么办呢?

可以这样写:this["abc"]=1;

这样便也定义了一个变量abc。

啊?能这么写吗?能!不信?测试运行一下就知道了。

但这还是看到了abc字符串,也看到了赋值的内容是数字1。有没有办法更隐藏一些呢?

有,还可以用JShaman对这一行代码进行混淆。

打开网易新闻 查看精彩图片

混淆之后,this["abc"]=1;会变成:

this["\u0061\u0062\u0063\u0064"]=0x3ba17^0x3ba16;

这时,如果进行console.log(abc)alert(abc),会看到变量abc的值1被输出了。

打开网易新闻 查看精彩图片

但在这行代码中,一眼看去,即不存在变量abc,也没有数值1。

是不是很有意思呢?

这样的JS编程技巧,你学会了吗?