sb 讲解 (!(~+[])+{})[--[~+][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]
代码:(!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]
输出sb。
分段解析:
首先解析s:
(!(~+[])+{}) --> 输出 "false[object Object]"
由于 ! 优先级 高于 +, 所有先算 !(~+[]), 而 ~+[] ,根据标准。。解释器会把 [] 转成 0;从而得到 ~0. =-1,所以 (~+[])=-1,而 !(-1) =false;
从而得到 (false+{}). 标准规定默认相加会调用toString 操作。相当于 "false"+"[object Object]";
下面解析 索引位置:[--[~+""][+[]]*[~+[]] + ~~!+[]]
首先确定运算顺序: 由于[]高于 --,-- 优先级高于 *和+。 顺序如下
1. [~+""] =r1 = ~(+"") 而 +"" =0; 所以 ~+"" ==>~0=-1;故为 [-1]
2. [ +[] ]= r2 = [0]
3. [~+[]]=r3 = [~0] = [-1]
4. [(--r1r2)*r2+~~!+[]] = [--[-1][0]*[-1]+1] = [--(-1)*[-1]+1] = [-2*[-1]+1]=[3]
返回结果 [3]; 备注 : ~~!+[] = 1
所以(!(~+[])+{})[--[~+""][+[]]*[~+[]] + ~~!+[]]='s';
下面看b:({}+[])[[~!+[]]*~+[]]
首先看:({}+[]) 结果为 "[object Object]". 按标准会把两边操作数toString 操作。结果 "[object Object]"+""="[object Object]"
然后 [[~!+[]]*~+[]]:
1. [~!+[]]
1.1 +[]=r1=0
1.2 !r1=r2=!0=true (-)一元操作符说明:
1.3 ~r2=~true=-2
所以 [~!+[]]=[-2]
2.~+[]
2.1 +[]=r1=0 (+): 一元操作符说明:http://es5.github.io/index.html#x11.4.6
2.2 ~r1=~0=-1 ( ~ )一元操作符说明:http://es5.github.io/index.html#x11.4.8
所以 ~+[]=-1
所以 [[~!+[]]*~+[]]=[-2]*[-1]=2 (*) 二元操作符说明:http://es5.github.io/index.html#x11.5.1
所以 ({}+[])[[~!+[]]*~+[]]= "[object Object][2]"=b;
转载于:https://www.cnblogs.com/Mr-Joe/p/4239460.html
sb 讲解 (!(~+[])+{})[--[~+][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]相关推荐
- 使用具体的例子来讲解如何使用Esper
这篇文章使用了一个通俗的具体的例子来讲解Esper.在文末有两个版本的代码链接.通过这篇文章,你将会了解如何使用Esper,了解如何集成Esper到Spring框架中,了解如何使用Apache Act ...
- HTTP代理如何正确处理Cookie(2) - 转载(写的比较详细,并以实例讲解)
HTTP代理如何正确处理Cookie(2) - 转载(写的比较详细,并以实例讲解) http://hi.baidu.com/bdui/blog/item/de891ad90cb4b12f11df9ba ...
- 工业机器人电路图讲解话术_6张经典电路图分析助你进阶高级电工,你都会了吗?...
很多初学者朋友不知道怎么分析电路图,今天小编就挑选几个经典案列一一讲解,只要你彻底的学透了这几个电路,你就能慢慢学着自己设计电路了.高级电工考试会给出电路图,只要你会分析电路图,看图接线即可. 星三角 ...
- 代码讲解java_主要代码的讲解
下面就讲解其核心部分--解析接收到的xml数据,并以文本类消息为例,通过图灵机器人api接口实现智能回复. 2.1 首先看一下整体流程处理代码,包括:xml数据处理.调用图灵api.封装返回的xml数 ...
- SpringBoot AOP完全讲解二:统一处理请求日志
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80669451 本文出自[赵彦军的博客] 前言 不了解 AOP 概念的同学,请先看 ...
- 14.查看信息深入讲解
查看信息深入讲解 -git status -sb -git show HEAD -git show 哈希值 -git log --oneline -5 //查看提交的5条信息' -git hi -5 ...
- 详细讲解Android的网络通信(HttpUrlConnection和HttpClient)
前言,Android的网络通信的方式有两种:使用Socket或者HTTP,今天这一篇我们详细讲解使用HTTP实现的网络通信,HTTP又包括两种方式编程方式: (1)HttpUrlConnection: ...
- c++判断二叉树是否为二叉搜索树_原创 | 好端端的数据结构,为什么叫它SB树呢?...
点击上方蓝字,关注并星标,和我一起学技术. 大家好,今天给大家介绍一个很厉害的数据结构,它的名字就很厉害,叫SB树,业内大佬往往叫做傻叉树.这个真不是我框你们,而是它的英文缩写就叫SBT. SBT其实 ...
- 【转】Java Socket编程基础及深入讲解
原文:https://www.cnblogs.com/yiwangzhibujian/p/7107785.html#q2.3.3 Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要 ...
最新文章
- iOS中nil Nil NULL 区别
- ExtJs计算两个DateField所间隔的月份(天数) new Date(str) IE游览器提示NaN 处理...
- python代码大全p-Python5种代码维护工具
- 再发些CSS常用技巧和兼容方案
- 《Adobe Illustrator大师班:经典作品与完美技巧赏析》—Bree Léman
- Web前端研发工程师编程能力飞升之路
- [Coding Style] CSS coding style
- Java实训项目10:GUI学生信息管理系统 - 实现步骤 - 创建数据访问接口实现类
- Learn Linux The Hard Way — LinuxTOY
- Linux系统下配置JDK环境变量
- Memcache的 简介
- 莫烦 python教程学习笔记————搭建自己的神经网络
- php 快递打印设置,让ecshop批量打印快递单修改方法
- QQ聊天记录的备份和恢复(含迁移与合并)
- 走到人生边上 - 笔记
- 要实现无人机的乌托邦 阿西莫夫机器人三大定律该变了
- 记录一次使用华为云服务器(从零搭建环境)
- 天空图立方体贴图转化为辐照度立方体贴图
- Windows_PC端微信双开/多开方法汇总(不改软件和插件,批处理)[微信技术教程]
- Zotero的MDPI参考文献标注模板资源,导入直接使用。
热门文章
- SpringBoot 项目修改html后不需要重新启动(热部署)
- cad模型轻量化_【技术帖】基于轻量化概念的碳纤维复合材料汽车保险杠设计
- python实现基于KNN算法的手写数字识别系统 非常详细!!!!
- 在电脑上怎么做报表新手_自己怎样在电脑上制作表格
- 3. Caller 服务调用 - dapr
- 如何获取Windows 10的锁屏壁纸
- 解决Error:L6218E:Undefined symbol TimingDelay_Decrement (referred from stm32f2xx_it.o)问题
- xkcd目录_使用随机XKCD漫画作为您的桌面墙纸
- 更新fielddata为true_[翻译]Elasticsearch重要文章之五:预加载fielddata
- 2010上半年网络规划设计师上午试卷、标准答案及分析Ⅱ