送给产品经理的一段代码 (!(~+[]) + {})[--[~+][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]] ...
送给产品经理一段代码 让他放到 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 原文地址
送给产品经理的一段代码 (!(~+[]) + {})[--[~+][+[]] * [~+[]] + ~~!+[]] + ({} + [])[[~!+[]] ...相关推荐
- 【干货】写给产品经理和设计师的用户体验知识
2014年5月,我在腾讯内部转岗,开始从事产品相关的工作,我RTX资料中的"职位"一栏后面的内容变成了"产品策划",这标志着我之前4年交互设计师工作经历的正式结 ...
- 产品经理进修第一天 产品经理的定位和合作
开篇词 | 打造千万用户的世界级产品 每次朋友聚会,甭管是高雅的奶酪红酒派对还是啤酒撸串,大家一见到我,总是会眉飞色舞地跟我吐槽,说我们刚刚发布的产品哪里哪里不好用,或者哪里哪里好玩得不得了:甚至和六 ...
- “程序员吐槽大会”上,被怼坏的阿里美女产品经理,做出了2亿人在用的钉邮钉盘!...
点击"技术领导力"关注∆ 每天早上8:30推送 来源:电商报(ID:kandianshang) 作为产品经理的你,现在还好吗? 2019年9月的云栖大会,专门为程序员举办的&qu ...
- 写给想成为产品经理的学生们
应该说,这篇文章是写给我们,这群想成为产品经理的学生们. 就我个人而言,有想未来从事产品经理岗位的打算,是在大四下.我想如果我没有去百度进行为期半年的实习,而是留在实验室研究天线,也许未来真的就大不相 ...
- 7 06 | 硅谷产品经理们都来自什么背景?
对于什么背景的人最适合做产品经理,一直是众说纷纭.有的说没当过工程师的"戏精"不是好的产品经理:有的说产品经理谁都可以干,只要能吹牛互撕就行了:也有的说最好的产品经理从来都是&qu ...
- 应届生求职产品经理系列【三】:0岁产品经理的八大困惑(上)
随着近几年互联网的火爆,越来越多的人开始投身于互联网.产品经理由于待遇尚可.硬性要求低.无专业限制.重沟通.重创意等特点,成为校招季互联网求职最火的方向. 但是在决定要不要all in 产品经理的过程 ...
- Stack Overflow上最火的一段代码竟然有Bug
作者 | Andreas Lundblad 译者 | 弯月 责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews) 2010年的某一天,我忙中偷闲去Stack Overflow上赚声 ...
- 读“产品经理那些事儿”有感
<产品经理那些事儿>的作者以自己十年的工作经历为背景,用化名为我们讲述了其从程序员到产品经理的一段人生旅程.在回忆中,其穿插了大量产品经理需要掌握的知识,而这些知识更多是开发技术之外的知识 ...
- PMP|一文带你正确认识产品经理和项目经理的区别
最近有很多朋友咨询弘博老师对于产品经理和项目经理的区别, 很多朋友对这两个岗位的区别都有疑问,更有部分经常和这两个PM打交道的程序员和分析师也没弄明白,但他们对这两类人的共识是"不干活的,瞎 ...
最新文章
- mysql 5.1 禁用innodb
- 极简写作语言-Markdown
- 「 每日一练,快乐水题 」1791. 找出星型图的中心节点
- 将人民币的数字表示转化成大写表示(C#版)
- go append 方法_Go 的 append 操作是线程安全的吗
- 实习成长之路:DelayQueue多线程下的延迟队列的使用
- 11-标志寄存器+adc/sbb+cmp+条件转移指令
- 汉字与多字节编码的转换 - 回复 不知道 的问题
- 论文 | 科研软件 —— SPSS Statistics V26.0安装及注册教程
- matlab-滤波系数生成频响曲线
- T10 微信公众号如何获得清晰头像?
- JVM七大垃圾回收器上篇Serial、ParNeW、Parallel Scavenge、 Serial Old、 Parallel Old、 CMS、 G1【尚】
- 中国家庭收入调查(CHIP)数据88-13年
- sdust-Java-字符串集合求并集 (10分)
- 数据库系统原理--------层次模型
- Druid连接池的实用配置详解
- java描绘条形码_java生成条形码工具类
- 手机闹钟软件测试用例,手机测试用例
- BGP线路是什么意思?服务器单线、双线、三线以及BGP线路有什么区别?
- 迈锐宝1.5t噪音测试软件,【图】更省油更平顺 测试2017款迈锐宝 1.5T_汽车之家
热门文章
- 下列哪些是java语言的条件执行语句_13春福师《JAVA程序设计》在线作业二
- idea 运行jmeter源码_学会BeanShell,才敢说自己懂Jmeter
- java 俄语 工作_工作俄语怎么说
- 同名字的数值求和插入行_中望CAD2021:支持表格和字段插入公式,提高数据处理效率...
- kettle 表输入 显示重复_表输入插件详解
- c++:结构体的应用
- 【NLP】有三AI NLP知识星球来了,仅此一家别无分店
- 中国水泥电杆市场全景调研及发展战略研究报告2022-2028年版
- 全球及中国绝缘材料用沸石行业“十四五”前景规划及未来发展趋势报告2021年版
- python循环输出00-59