• wordpress CMS主题:ssmay主题 wordpress CMS主题:ssmay主题
  • 首页 > 前端开发 > 送给产品经理的一段代码 (!(~+[]) + {})[–[~+""][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]]

    送给产品经理的一段代码 (!(~+[]) + {})[–[~+""][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]]

    作者: 分类:前端开发 点击: 623 次
    wordpress CMS主题:ssmay主题

      扫描下面的二维码,“关注”我的百家号。

      送给产品经理一段代码 让他放到 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))

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

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

      参考文章

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

      github 原文地址

      本文转载于猿2048:送给产品经理的一段代码 (!(~+[]) + {})[--[~+""][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]]



      欢迎“关注”我的百家号。

      头条二维码
      加入我的QQ群
      头条二维码
      关注我的百家号

    文章作者:sunny
    本文地址:http://wanlimm.com/77202006218460.html
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    发表评论

    您的电子邮箱地址不会被公开。 必填项已用*标注

    此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据