亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

送給產品經理的一段代碼

標簽:
搞笑

送给产品经理一段代码 让他放到 console 去

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

其实这段代码是我的同事发给我的, 我定睛一看一定有坑, 于是准备破解一番

其实这里面涉及到的知识点无非三个

  • 数据类型的转换

  • 位运算(按位非)

  • 运算符的优先级

分析之前我推荐大家看几篇文章

首先我们把代码进行拆分

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

+

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

简单来看就是 (A)[B] + (C)[D]

首先来看 A !(~+[]) + {}

+[] -(数据类型转换)-> 0

~+[] --> ~0 -(位运算)-> -1

!(~+[]) --> !(-1) -(类型转换)-> false

(!(~+[]) + {}) --> false + {} -(类型转换)-> 'false[object Object]'


再来看 B --[~+""][+[]]*[~+[]] + ~~!+[]


[~+""] --> [~0] --> [-1]

+[] --> 0

--[~+""][+[]] --> --[-1][0] --> --(-1) --> -2


[~+[]] --> [~0] --> [-1]


~~!+[] --> ~~!0 --> ~~true --> ~-2 -> 1


B --> -2 * [-1] + 1 --> 2 + 1 --> 3


那么 (A)[B] --> 'false[object Object]'[3] --> 's'

再来看 C ({} + [])

这里的  {} 其实是个代码块

所以等价于 +[][object Object]

再来看 D [~!+[]] * ~+[]

[~!+[]] --> [~!0] --> [!1] --> -2

~+[] --> ~0 --> -1

D -> -2 * -1 --> 2



所以 (C)[D] --> '[object Object]'[2] --> 'b'

那么

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

--> (A)[B] + (C)[D) 

--> 's' + 'b' 

--> 'sb'


谢谢观看 😄

现在可以发给产品经理了

让他打开 chrome, (windows: F12, mac: command+option+(j or i))

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

这就是我们前端一直想对你说的话


参考文章

注 文中对产品经理的冒犯仅为了行文效果 😅 前端和产品是相亲相爱的一家人 😆



作者:小鱼二
链接:https://juejin.cn/post/6844903561495576590
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消