送给产品经理一段代码 让他放到 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 -> 1B --> -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 原文地址

送给产品经理的一段代码 (!(~+[]) + {})[--[~+][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]] ...相关推荐

  1. 【干货】写给产品经理和设计师的用户体验知识

    2014年5月,我在腾讯内部转岗,开始从事产品相关的工作,我RTX资料中的"职位"一栏后面的内容变成了"产品策划",这标志着我之前4年交互设计师工作经历的正式结 ...

  2. 产品经理进修第一天 产品经理的定位和合作

    开篇词 | 打造千万用户的世界级产品 每次朋友聚会,甭管是高雅的奶酪红酒派对还是啤酒撸串,大家一见到我,总是会眉飞色舞地跟我吐槽,说我们刚刚发布的产品哪里哪里不好用,或者哪里哪里好玩得不得了:甚至和六 ...

  3. “程序员吐槽大会”上,被怼坏的阿里美女产品经理,做出了2亿人在用的钉邮钉盘!...

    点击"技术领导力"关注∆  每天早上8:30推送 来源:电商报(ID:kandianshang) 作为产品经理的你,现在还好吗? 2019年9月的云栖大会,专门为程序员举办的&qu ...

  4. 写给想成为产品经理的学生们

    应该说,这篇文章是写给我们,这群想成为产品经理的学生们. 就我个人而言,有想未来从事产品经理岗位的打算,是在大四下.我想如果我没有去百度进行为期半年的实习,而是留在实验室研究天线,也许未来真的就大不相 ...

  5. 7 06 | 硅谷产品经理们都来自什么背景?

    对于什么背景的人最适合做产品经理,一直是众说纷纭.有的说没当过工程师的"戏精"不是好的产品经理:有的说产品经理谁都可以干,只要能吹牛互撕就行了:也有的说最好的产品经理从来都是&qu ...

  6. 应届生求职产品经理系列【三】:0岁产品经理的八大困惑(上)

    随着近几年互联网的火爆,越来越多的人开始投身于互联网.产品经理由于待遇尚可.硬性要求低.无专业限制.重沟通.重创意等特点,成为校招季互联网求职最火的方向. 但是在决定要不要all in 产品经理的过程 ...

  7. Stack Overflow上最火的一段代码竟然有Bug

    作者 | Andreas Lundblad 译者 | 弯月     责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 2010年的某一天,我忙中偷闲去Stack Overflow上赚声 ...

  8. 读“产品经理那些事儿”有感

    <产品经理那些事儿>的作者以自己十年的工作经历为背景,用化名为我们讲述了其从程序员到产品经理的一段人生旅程.在回忆中,其穿插了大量产品经理需要掌握的知识,而这些知识更多是开发技术之外的知识 ...

  9. PMP|一文带你正确认识产品经理和项目经理的区别

    最近有很多朋友咨询弘博老师对于产品经理和项目经理的区别, 很多朋友对这两个岗位的区别都有疑问,更有部分经常和这两个PM打交道的程序员和分析师也没弄明白,但他们对这两类人的共识是"不干活的,瞎 ...

最新文章

  1. mysql 5.1 禁用innodb
  2. 极简写作语言-Markdown
  3. 「 每日一练,快乐水题 」1791. 找出星型图的中心节点
  4. 将人民币的数字表示转化成大写表示(C#版)
  5. go append 方法_Go 的 append 操作是线程安全的吗
  6. 实习成长之路:DelayQueue多线程下的延迟队列的使用
  7. 11-标志寄存器+adc/sbb+cmp+条件转移指令
  8. 汉字与多字节编码的转换 - 回复 不知道 的问题
  9. 论文 | 科研软件 —— SPSS Statistics V26.0安装及注册教程
  10. matlab-滤波系数生成频响曲线
  11. T10 微信公众号如何获得清晰头像?
  12. JVM七大垃圾回收器上篇Serial、ParNeW、Parallel Scavenge、 Serial Old、 Parallel Old、 CMS、 G1【尚】
  13. 中国家庭收入调查(CHIP)数据88-13年
  14. sdust-Java-字符串集合求并集 (10分)
  15. 数据库系统原理--------层次模型
  16. Druid连接池的实用配置详解
  17. java描绘条形码_java生成条形码工具类
  18. 手机闹钟软件测试用例,手机测试用例
  19. BGP线路是什么意思?服务器单线、双线、三线以及BGP线路有什么区别?
  20. 迈锐宝1.5t噪音测试软件,【图】更省油更平顺 测试2017款迈锐宝 1.5T_汽车之家

热门文章

  1. 下列哪些是java语言的条件执行语句_13春福师《JAVA程序设计》在线作业二
  2. idea 运行jmeter源码_学会BeanShell,才敢说自己懂Jmeter
  3. java 俄语 工作_工作俄语怎么说
  4. 同名字的数值求和插入行_中望CAD2021:支持表格和字段插入公式,提高数据处理效率...
  5. kettle 表输入 显示重复_表输入插件详解
  6. c++:结构体的应用
  7. 【NLP】有三AI NLP知识星球来了,仅此一家别无分店
  8. 中国水泥电杆市场全景调研及发展战略研究报告2022-2028年版
  9. 全球及中国绝缘材料用沸石行业“十四五”前景规划及未来发展趋势报告2021年版
  10. python循环输出00-59