|
Jsfuck官网: https://jsfuck.com/ Jsfuck呢作为一种很有意思的js编码方式,经常被用来加密或者整活 这是官方的介绍
这是官方的描述 Basics
讲解 想要理解jsfuck需要对js有足够的基础,接下来我来对内容进行详细的讲解
[]代表数组类型,我们要把他转换成原始类型 我们先试着用valueof方法还原 然后发现他会报错 既然valueof不行 那么我们就换一种方法
我们试着将[]转换为字符串 这样我们就得到了一个空字符串 此时他是有值的 值是一个空字符串 所以他就代表true 那么![] = !true就能得出false 然后再讲一下true 为什么true前面要加上两个!呢 因为[]就代表[] !!代表!false也就是true undefined同理 []表示数组[][[]]就表示数组[]里的第[]个 然后我们可以把他理解为[][1] 拿 true == 1 举例 他返回true true会转换为1 []的第一位没有声明值 所以返回undefined NaN代表非数字(not a number) 我们来分析一下 [![]] 的意思我们可以理解为false ( 为啥看前面 我就不老讲了 ) false是一个布尔值 所以就会返回NaN 不是一个数字 +[]很好理解 []代表空字符串 +运算符遇到数组时会先调用toString()来将数组转换为字符串,然后转换为数字相加 那不就是0么 然后讲一下类型 Array表示数组 这个很基础 都知道应该 +[] 把空字符串转换为数字类型也就是Number String 运用了+号的特性 []代表"" 那字符串之间用+代表拼接 所以[]+[]不是数字类型 而是字符串类型 因为值可以代表布尔类 所以[]加上逻辑运算符!就可以得到布尔变量 这个一般用来判断是否存在值 而不需要typeof返回类型 |
提升卡
观察者