`
artdialog
  • 浏览: 105218 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为什么 ++[[]][+[]]+[+[]] = 10?

阅读更多

首先,问这个问题的人是个天才,他怎么会遇到这样的一个问题。 其次,回答这个问题的人更是一个天才,我难以想象他会回答这个问题,更难以想象的是,他的回答是如此的详细和丰富和完整,真正称得上诲人不倦。

既然遇到了这个问题,我们不妨也跟着提高一下。

这是一个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" // 耶

如果你想知道更详细的信息,请访问这里

7
48
分享到:
评论
1 楼 damoqiongqiu 2012-08-01  
虽然不懂是什么,但是看起来NB的样子

相关推荐

    10个经典程序c语言

    sum += s; } printf("\nsum=%ld", sum); ``` 此段代码通过 `for` 循环来计算一个累加和。初始时,`sum` 和 `s` 均被赋值为 4。在每次循环中,首先输出当前的 `sum` 值,然后根据循环变量 `j` 的值更新 `s` 的值(前...

    java中for(int i= 0; i<=10;i=i++)System.out.print(i);为什么无限输出0

    在本文中,我们将深入探讨一个有趣的`for`循环示例,并解释为什么该示例会导致一个无限循环并无限输出数字0。 #### 循环示例 考虑以下Java代码片段: ```java public class Test { public static void main...

    过程控制课程设计-串级温度控制系统资料.pdf

    2. 以加热炉出口温度为主变量,选择滞后较小的炉膛温度为副变量,构成炉出口温度与炉膛温度的串级控制系统,要求绘制该串级控制系统结构图。 3. 假设主对象的传递函数为 ????1( ??) =1(5??+1)( ????+1),其中??= 10 ...

    python 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字 (示例)

    # 题目: # 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。 # 分析: # 关键是计算出每一项的值。

    Python中的连接符(+、+=)示例详解

    前言 本文通过在一段示例代码中发现的问题... item += [0] * (10 - len(item)) print a print b print c 这段代码的意思是,有三个列表,需要在长度不为 10 的列表尾部填充 0,让其长度变为10。 输出如下: [1, 2, 3,

    三年级数学脱式计算题.doc

    这些练习涵盖了基础的算术运算,对三年级学生来说非常重要,因为它们能够帮助孩子们巩固计算技能,为更高年级的数学学习打下坚实的基础。通过这样的练习,孩子们不仅可以提高计算速度,还能培养逻辑思维能力和问题...

    一年级20以内加减法口算天天练.pdf

    * 题目:20- 5+019-19+1620-10=、6+3=、10+10=、12-1-10=、7-2+1=、13-0=、13+7=、2-2=、10+10=、0+8+9=、15-11=、9- () =414- ()=7=、5+3=、12-3+9=、3+8- 4=、9+9=、4+5=、2-2=...

    计算Sn(求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值)

    Description 求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个...第一个为a ,第二个为n(表示有多少个数相加),其中a和n都是大于1且小于10的整数. Output 输出其和. Sample Input 2 5Sample Output 24690

    史上最全的运放典型应用电路及分析[规整].pdf

    同相比例器采用电压串联负反馈,电路符号为`FoiuRuuRRRuuRRRuuu+=∴+==−+1111`。输入电压与输出电压之间的关系为`iFouRRu)1(1+=`,增益为`1+R2/R1`,其中`R1`是输入电阻,`R2`是反馈电阻。这种电路的增益可以非常...

    python 遗传算法 求解函数f(x)=x+10sin5x+7con4x在给定区间0 9上的极大值

    python写的,ipynb文件导出的html格式文件。简单修改代码,可就求解任意给定区间上任意函数的最大值(修改代码中的区间范围和函数表达式)github链接: ...

    小学一年级100以内加减混合运算口算题八A4-100-.doc

    总的来说,这份资料是小学一年级学生提高计算技能的重要工具,通过反复练习,孩子们能够更好地掌握100以内的加减法,为后续的数学学习打下坚实的基础。家长和教师可以通过让孩子们完成这些口算题,定期检查他们的...

    高等数学第5单元测试卷参考解答1

    为求常数a ,两边取由0到1的积分得axdxa210+=∫,解得2110−=−=∫ xdxa。由此,1)(−= xxf。 答案:A 12. 11coslimcoslim20020==→→∫xxdttxxx 答案:A 三、计算解答 1. (1) 计算积分:∫−2023 4dxxx 令...

    四年级下册800道口算题.doc

    文档"四年级下册800道口算题.doc"包含了一系列小学四年级数学的口算练习题目,主要涉及加法、...家长和教师可以通过这样的口算题集来检查学生的计算技能,帮助他们巩固所学,并为更高年级的数学学习打下坚实的基础。

    【化学】高考必备高中化学方程式大全(分类).doc

    Cl2+2FeCl2===2FeCl3 (在水溶液中:Cl2+2Fe2+===2Fe3++3Cl) Cl2+2NaBr===2NaCl+Br2 Cl2+2Br=2Cl+Br2 Cl2+2KI===2KCl+I2 Cl2+2I=2Cl+I2 3Cl2(过量)+2KI+3H2O===6HCl+KIO3 3Cl2+I–+3H2O=6H++6Cl–+IO3– 5Cl2...

    小学一年级20以内加减法混合练习题(3500道).doc

    3. 9+10=? 4. 6+14=? 5. 10-2=? 这些题目在难度上可能稍有提升,但仍然保持在20以内的范围内,旨在巩固和深化孩子们的加减法运算能力。 总的来说,这份练习材料为小学一年级学生提供了一个全面的加减法训练平台,...

    C++式子n^1+n^2+n^3+……+n^10计算

    题目中的任务是编写一个函数来计算特定的级数和,即 \( n^1 + n^2 + n^3 + \ldots + n^{10} \),其中 \( n \) 可以取值 1、2 或 3,且函数参数的默认值为 1。这个级数实际上是一个有限等比数列的和,公式如下: \[ ...

    一年级数学10以内的加减法练习题.pdf

    一年级作为学生学习生涯的起始阶段,10以内的加减法练习可以帮助孩子们熟悉数数,理解数字间的关系,为后续更复杂的数学学习打下坚实的基础。 描述:“一年级数学10以内的加减法练习题.pdf” 这个描述重复了标题的...

    四年级数学运算定律练习题.pdf

    (10)22× 46+22× 59-22× 2=?(11)175× 463+175× 547- 175=?(12)355+260+140+245=? 应用题是指将数学知识应用于实际问题中的运算。这些问题需要学生运用之前所学的知识,灵活地应用运算定律和性质来...

    数字逻辑设计试题中文+答案

    1 [19]10=[ 11010 ]Gray (假设字长为5bit) 2 若X=+1010,则[X]原=( 00001010 ),[-X]补=( 11110110 ),(假设字长为8bit) 3 [26.125]10=[ 1A.2 ]16=[ 00100110.000100100101 ]8421BCD 4 65进制的同步...

Global site tag (gtag.js) - Google Analytics