首先,问这个问题的人是个天才,他怎么会遇到这样的一个问题。其次,回答这个问题的人更是一个天才,我难以想象他会回答这个问题,更难以想象的是,他的回答是如此的详细和丰富和完整,真正称得上诲人不倦。
既然遇到了这个问题,我们不妨也跟着提高一下。
这是一个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" // 耶!
如果你想知道更详细的信息,请访问这里。
分享到:
相关推荐
(2)解:CDBABCDADBCADCBADCBAABCDDABCDCABDCABCDBADCBADCBADCBACDABBABABAACDDACDCADCACDADCADCADCABBCDDBCDCBDCBCDBDCBDCBDCBAYCDBAY++++++++++++=+++++++++++++++++++=++ (3)解:MNLNMLNLMNMLNMLNMLY+++++++++...
在本文中,我们将深入探讨一个有趣的`for`循环示例,并解释为什么该示例会导致一个无限循环并无限输出数字0。 #### 循环示例 考虑以下Java代码片段: ```java public class Test { public static void main...
6. 错误纠正:由于文件内容可能是通过OCR扫描得到的,存在一些识别错误,如“19-11=10+9=16-7=2+15=16-15=15+3=9-4=20-1=11-10=6+8=2+5=2+6=10+1=17-16=13+4=20-1=1+2=20-3=2+7=19-6=15-12=9+1=14-1=5+2=13+7=19-4=3...
S += factorial(i); } printf("S = %d\n", S); return 0; } ``` 这段代码首先定义了一个名为`factorial`的递归函数,用于计算给定数字的阶乘。在`main`函数中,我们读取用户输入的N值,然后通过for循环迭代1...
8. 简单的数学逻辑:虽然题目是基础的加减法,但在解决一些涉及多个步骤的题目时,例如“15+3=18-7=5+1=10-1=12+5=8+9=11-2=15+1=19-11=7+13=10+9=16-7=2+15=13-4+11=16-15=15+3=9-4=10+4-7=20-1=11-10=6+8=18-7+2=2...
C语言程序设计-编写程序求无理数e的值并输出;计算公式为:e=1+11!+12!+13!+......+1n!当1n!0.000001时e=2.718282;.c
求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字(1<=a<=9)。例如:2+22+222+2222+22222(a=2,n=5),a和n由键盘输入
# 题目: # 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。 # 分析: # 关键是计算出每一项的值。
1、 按照规则计算单词的值,如果 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为1 2 3 4 5 6 7 8 9 10 11 12 13 1 15 16 17 18 19 20 21 22 23 24 25 26, 如 WINJACK这个...
这些题目属于小学数学中的混合运算,也就是我们常说的“脱式计算”或“带符号运算”。在解决这类问题时,我们需要遵循...通过反复练习此类题目,学生能够熟练掌握混合运算的步骤,为更高年级的数学学习打下坚实的基础。
1、按照规则计算单词的值,如果A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 , 如 WINJACK这个...
前言 本文通过在一段示例代码中发现的问题... item += [0] * (10 - len(item)) print a print b print c 这段代码的意思是,有三个列表,需要在长度不为 10 的列表尾部填充 0,让其长度变为10。 输出如下: [1, 2, 3,
6码算法的误比特率性能。基于matlab,搭建BPSK+卷积编码+交织通信收发链路,仿真参数如下:1) 信源比特速率: 100 b R kbps =2) 卷积编码:码率为1/...交织:行列交织,交织器深度为100bit,宽度为10;5) 仿真点数:106
3. 将`a`乘以10,模拟`a`后面添加一个零,以便生成下一项。例如,如果`a`原来是2,那么现在变成20。 4. 增加`i`的值,表示已经处理了一项。 循环完成后,我们打印出用户输入的`n`值以及序列的总和`sum`。这可以通过...
sum += Factorial(i); } Console.WriteLine("1! + 2! + ... + 10! = " + sum); } // 阶乘函数 static int Factorial(int n) { if (n == 0 || n == 1) return 1; else return n * Factorial(n - 1); } } `...
Description 求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个...第一个为a ,第二个为n(表示有多少个数相加),其中a和n都是大于1且小于10的整数. Output 输出其和. Sample Input 2 5Sample Output 24690
1、按照规则计算单词的值,如果A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 , 如 WINJACK这...
1. 5+4=9, 3+6=9, 4+2=6, 9+0=9, 2+7=9, 1+7=8, 6+4=10, 7+3=10, 2+3=5, 0+10=10, 10-2=8, 5-4=1, 2+6=8, 5+4=9, 8-3=5, 3+1=4, 67-2=65(可能是误输入,正确的应该是6-2=4), 5+5=10, 2-1=1, 3+3=6, 5-3=2, 06-5...
本资源为一年级数学口算100道题,涵盖了基本的加减乘除运算,旨在帮助一年级学生巩固数学基础和提高口算速度。下面将这些题目汇总成知识点,供教师和学生参考。 一、加法运算 * 重要知识点:加法的定义、加法的...
减法运算电路,如`−+−+=++=+=uuuRuRRRuuRRRuiFoi)(111212323 123211123231)1(iioFiFiFouuuRRRRuRRuRRRRRu−====−++=`,通过改变电阻分配,实现两个或更多电压的差值运算。 5. **积分运算电路**: 积分电路`...