`
artdialog
  • 浏览: 105252 次
  • 性别: 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` 的值(前...

    最新一年级上册数学专项练习题应用题解答问题(7)1.doc

    5. 小旗的数量(5):乘法概念的初步应用,两边相同则总数为单边的两倍(8 * 2 = 16)。 6. 减法问题(6):根据已知总数和已知部分求剩余部分(18 - ? = ?)。 7. 数学问题的提出(7):鼓励学生提出与图形相关的...

    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...

    一年级下册元角分换算练习题(1).pdf

    本资源为一年级下册元角分换算练习题,涵盖了元角分之间的换算、基本的加减法运算和应用题。以下是该资源的知识点总结: 一、元角分换算 * 1元 = 10角 * 1角 = 10分 * 元角分之间的换算: + 3元 = 30角 + 5元 = ...

    计算 S=1!+2!+3!+...+N! C语言代码

    S += factorial(i); } printf("S = %d\n", S); return 0; } ``` 这段代码首先定义了一个名为`factorial`的递归函数,用于计算给定数字的阶乘。在`main`函数中,我们读取用户输入的N值,然后通过for循环迭代1...

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

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

    linux下GTK+2.0开发的单词数值计算器

    WINJACK这个单词的值就为:W+I+N+J+A+C+K=23+9+14+10+1+3+11=71% HARDWORK=H+A+R+D+W+O+R+K=8+1+18+4+23+15+18+11=98% KNOWLEDGE=K+N+O+W+L+E+D+G+E=11+14+15+23+12+5+4+7+5=96% LOVE=L+O+V+E=12+15+22+5=54% LUCK=L...

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

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

    三年级数学脱式计算题.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=...

    求s=a+aa+aaa+aaaa+aa...a的值.docx

    3. 将`a`乘以10,模拟`a`后面添加一个零,以便生成下一项。例如,如果`a`原来是2,那么现在变成20。 4. 增加`i`的值,表示已经处理了一项。 循环完成后,我们打印出用户输入的`n`值以及序列的总和`sum`。这可以通过...

    计算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。这个级数实际上是一个有限等比数列的和,公式如下: \[ ...

Global site tag (gtag.js) - Google Analytics