++[[]][+[]]+[+[]] == 10 //true
首先,问“这个问题(英文)”的人是个天才,他怎么会遇到这样的一个问题。 其次,回答这个问题的人更是一个天才,我难以想象他会回答这个问题,更难以想象的是,他的回答是如此的详细和丰富和完整,真正称得上诲人不倦。
既然遇到了这个问题,我们不妨也跟着提高一下。
这是一个Javascript 语言题目,一个完全有效的等式,不信自己可以试一下,下面看看高人的题解:
++[[]][+[]]+[+[]]
如果把这段表达式拆分开来,它相等于:
++[[]][+[]]
+
[+[]]
在 JavaScript 里,+[] === 0 是完全正确的。 + 会把一些字符转化成数字,在这里,这个式子会变成 +""或 0。
因此,我们可以简化一下(++ 比 + 有更高的优先级):
++[[]][0]
+
[0]
因为 [[]][0] 的意思是:获取 [[]] 的第一个元素,这就得出了下面的结果:
- [[]][0] 返回内部数组 ([])。根据语言规范,我们说 [[]][0] === [] 是不正确的,但让我们把这个内部数组称作 A,以避免错误的写法。
- ++[[]][0] == A + 1, 因为 ++ 的意思是”加一”。
- ++[[]][0] === +(A + 1);换句话说,你得到的永远是个数值( +1 并不一定得到的是个数值,但 ++一定是)。
同样,我们可以把这一堆代码简化的更清晰。让我们把 A 换回成 [] :
+([] + 1)
+
[0]
在 JavaScript 里,这也是正确的:[] + 1 === "1",因为 [] == "" (这相当于一个空的数组的内部元素连接),于是:
+([] + 1) === +("” + 1),并且
+("” + 1) === +("1"),并且
+("1") === 1
让我们再次简化一下:
1
+
[0]
同样,在 Javascript 里,这是正确的:[0] == "0",因为这是相当于一个有一个元素的数组的内部元素的连接。 各元素会使用,分隔。 当只有一个元素时,你可以推论出这个过程的结果就是它自身的第一个元素。
所以,最终我们得到 (数字 + 字符串 = 字符串):
1
+
"0"=== "10" // 耶!
如果你想知道更详细的信息,请访问这里(英文)。
原文地址:为什么 ++[[]][+[]]+[+[]] = 10?
转载于:https://www.cnblogs.com/oklfx/p/8355990.html
++[[]][+[]]+[+[]] == 10 //true相关推荐
- 深入理解闭包系列第五篇——闭包的10种形式
前面的话 根据闭包的定义,我们知道,无论通过何种手段,只要将内部函数传递到所在的词法作用域以外,它都会持有对原始作用域的引用,无论在何处执行这个函数都会使用闭包.接下来,本文将详细介绍闭包的10种形式 ...
- woo 10到任意进制,任意数值到十进制 之间转换
-- 10到16进制 print(_to(10,16)) -- 'a' -- 16到10进制 print(_to('a',10,true)) -- 10
- PowerBuilder 10 下调用FoxitPDFSDK_AX_Pro.ocx浏览打印PDF文件
在PowerBuilder中浏览.打印PDF文件,该代码已经在PB 10.5版本下测试可用. 使用的控件为FoxitPDFSDK_AX_Pro.ocx,该控件无水印,亲测可用. 具体操作步骤如下: 1 ...
- 2017.10.6 P97-zhx
(我向苍天续一秒) T1 a [问题描述] 你是能看到第一题的friends 呢. --hja 何大爷对字符串十分有研究,于是天天出字符串题虐杀zhx.何大爷今天为 字符串定义了新的权值计算方法.一个 ...
- 10 个你可能还不知道的很酷JavaScript特性
英文 | https://javascript.plainenglish.io/5-cool-javascript-features-you-might-not-know-about-yet-f2fc ...
- 【日常学习】【搜索递推和其他】10.21.2015校内测试总结
哭瞎了···昨天夜里写了一半多的博客因为卡机就这么没了TUT今天重新写,浪费我多少时间TUT 第一题 RQNOJ358 线段 画个图就知道是两点间距离的二倍···(我太傻竟没看出来) 但是!这是小圆圆 ...
- Go 学习笔记(45)— Go 标准库之 flag(命令行参数解析)
1. 参数解析说明 import "flag" flag 包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个 set 集合.每条都有各自的状态参数. 使用 f ...
- Python 类对象及属性内置方法 classmethod、delattr、dir、hasattr、getattr、callable
1. classmethod classmethod 修饰符对应的函数不需要实例化,不需要 self 参数.第一个参数需要是表示自身类的 cls 参数,能调用类的属性.方法.实例等. class Pe ...
- python中不同进制的整数之间可以直接运算_Python 进制转换、位运算
一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...
最新文章
- ThinkPHP5执行流程分析
- 部分博客中的代码已放到了GitHub上,欢迎大家下载阅读!
- Hive元数据信息表详解
- Dotnet Core多版本API共存的优雅实现
- 国际图形学大会(SIGGRAPH)2017届主席竞选答辩是如此场景
- php 使用csv海量数据导出类
- SPSS 百度网盘免费下载
- 计算机二级修改并应用基本简历模板,2020年新版个人简历模板大全可编辑(word版).docx...
- 【福利帖】当我谈学习视觉时,我谈些什么
- 《基础水文数据库》应用软件-水文预报中PA值计算
- Leetcode 300-最长递增子序列
- VCS第一讲:vcs和verdi演示一个简单的验证case
- RT-Thread物联网操作系统介绍:5、串口打印
- 汇编总结:mov指令
- python freshman day2
- Java成员方法getinfo_成员方法
- 【时序】Informer:用于长序列预测的高效 Transformer 论文笔记
- 拼团小程序服务器配置,拼团小程序的拼团活动怎么设置?
- 5G 网络切片构建方法
- git 推送出现 quot;fatal: The remote end hung up unexpectedlyquot; 解决方案
热门文章
- 二级计算机vf题型,2010计算机等级考试二级VF考试题型与解题技巧
- 陕西师范大学计算机科学学院保研院校,陕西师范大学计算机科学学院量子信息学保研细则...
- python 函数特殊属性
- opencv-api getAffineTransform()
- flask 重定向(redirect)和会话(session)
- 信息安全完全参考手册之风险分析(第二章)
- 职场真实故事计划##职场干货# 职场晋升之路
- Exchange Server 2016 独立部署/共存部署 (七)—— DAG功能测试
- CVE-2020-16875: Microsoft Exchange远程代码执行漏洞通告
- Netty学习总结(6)——Netty使用注意事项