把运算符强制转换成 SB ( 什么鬼 )

少侠先来看一串能输出你名字的 Js 代码。

(!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]

// "sb"
// 好像哪里不太对 - -

好嘛,既然是强制转换,咱们就来看一看是怎么个转换法。

(!(~+[])+{})
// "false[object Object]"

[--[~+""][+[]]*[~+[]] + ~~!+[]]
// [3]

+

({}+[])
// "[object Object]"

[[~!+[]]*~+[]]
// [2]

显然,以上就等价于:

"false[object Object]"[3] + "[object Object]"[2]
// sb

看懂这几个 基础运算/强制转换 你就明白了。

~0
// -1

~1
// -2

~[]
// -1

~{}
// -1

~""
// -1

!-1
// false

+""
// 0

+[]
// 0

+{}
// "[object Object]"


(!(~+[])+{})🐶[--[~+""][+[]]*[~+[]] + ~~!+[]]

=> (false + {})🐶[--[-1][0]*[-1] + 1]

=> "false[object Object]"🐶[2 + 1]

=> "s"


({}+[])🐶[[~!+[]]*~+[]]

=> "[object Object]"🐶[~1 * ~0]

=> "[object Object]"🐶[2]

=> "b"


"s" + "b"

=> "『你的名字』"