控制台打印 sb
控制台输入
(!(+[])+{})[–[+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[!+[]]*+[]]
打印
“sb”
是不是感觉特别神奇又不得其解,先把这个式子分解一下就清楚多了
- “sb” = “s” + “b”
const s = (!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]
const b = ({}+[])[[~!+[]]*~+[]]
const sb = s + b
console.log(s, b, sb) // "s" "b" "sb"
- “s” = (“false[object Object]”)[3]
const sStr = !(~+[])+{}
const sIndex = --[~+""][+[]]*[~+[]] + ~~!+[]
const s = (sStr)[sIndex]
console.log(sStr, sIndex, s) // "false[object Object]" 3 "s"
- “b” = ("[object Object]")[2]
const bStr = {}+[]
const bIndex = [~!+[]]*~+[]
const b = (bStr)[bIndex]
console.log(bStr, bIndex, b) // "[object Object]" 2 "b"
- “false[object Object]” = false + {}
- !(~+[]) = !(~0) = !(-1) = false
const falseBoolean = !(~+[])
const object = {}
const sStr = falseBoolean + object
console.log(falseBoolean, object, sStr) // false {} "false[object Object]"
- 3 = -2 * [-1] + 1
- –[~+""][+[]] = --[~0][0] = --[-1] = -2
- [~+[]] = [~0] = [-1]
- ~~!+[] = ~~!0 = ~~1 = 1
const number1 = --[~+""][+[]]
const number2 = [~+[]]
const number3 = ~~!+[]
const sIndex = number1 * number2 + number3
console.log(number1, number2, number3, sIndex) // -2 [ -1 ] 1 3
- “[object Object]” = {} + []
- 2 = [-2] * - 1
- [~!+[]] = [~!0] = [~1] = [-2]
- ~+[] = ~0 = -1
const number1 = [~!+[]]
const number2 = ~+[]
const bIndex = number1 * number2
console.log(number1, number2, bIndex) // [ -2 ] -1 2