你认为你了解 JavaScript? 快速的做一下下面的这些题目. 并将下面的每一个表达式的值写出.(答案在问题后面)
- ++Math.PI
- (0.1 + 0.2) + 0.3 == 0.1 + (0.2 + 0.3)
- typeof NaN
- typeof typeof undefined
- a = {
- null:null
- }; typeof a.null;
- a = "5"; b = "2"; c = a * b;
- a = "5"; b = 2; c = a+++b;
- isNaN(1/null)
- (16).toString(16)
- 10.016 * 2
- 11.~null
- 12."ab c".match(/\b\w\b/)
首先, 这不是一个入门教程, 因此我不会去对每一个答案做单独的解释, 如果你觉得你有不理解的地方, 我建议你 while (! 掌握 ()) 专研它 ();
答案:
- 4.141592653589793
- false
- "number"
- "string"
- "object"
- 10
- 7
- false
- 10
- 28
- -1
- [ "c" ]
我的打分如下 (每答对一题一分):
5 分 - 7 分: 了解 JavaScript
8 分 - 10 分: 专家
11: 大学士
12 分: 大师
简要的注释:
第 2 题: 答案是 false,JavaScript 和 java 非常相似 (或则其他使用了 IEEE 754 浮点数的语言), 这也是为什么在和钱打交道的正式应用程序中一般不使用浮点数四则运算的原因, 浮点数的加或乘除外, 下面这篇文章有关于浮点数四则运算的一个详细的讨论.
第 6 题: 在四则运算表达式中使用乘, 除或减, 如果表达式中包含一个或多个字符型, 那么语法解释器会试着首先将字符型转换为数值型, 如果算术表达式包含着加号运算, 那么所有的运算项都会被转换成字符型.
第 7 题: JavaScript 中表达式的运算的优先级是从坐到右 (类似于 Java 和 C), 因此, 在这里将会是一个先 a 计算值, 加上 b, 然后在 a++ 的次序, 而不是 a 加上 ++b 这样的运算.
第 9 题: toString() 可以带一个可选的数字参数. 参数值 16 意味着基于 16 进制, 返回的字符串将会是该数字的 16 进制表示, 在这个例子里面就是 10, 如果你写. toString(2) 那么你将会得到这个数字的 2 进制表示, 等等.
第 10 题: 016 是 8 进制表示, 即 8 进制的 14. 虽然是这样, 但比较有趣的是, 如果有你以 "016″(字符串形式) 去乘上一个数, 语法解释器会认为"016″是基于 10 进制的数.
如果你不能正确的写出这些题目的答案, 不要灰心丧气, 因为几乎上面的每一个问题都 (明显地) 含有着蒙蔽人小伎俩, 现在让我问面对它. 当然, 如果你非常正确的回答了上面的所有问题, 你也不必太过沾沾自喜, 这意味着这你仅仅是一个比任何正常人都奇怪的 JavaScript 怪杰而已!
来源: http://www.bubuko.com/infodetail-3437919.html