javascript专业八级测试答案拾掇

javascript专业八级测试答案整理
 
 

完整内容见原文链接:http://www.gbtags.com/gb/share/5839.htm

前几天社区的群里森破发了一个这样的链接:

http://ourjs.com/detail/52fb82e13bd19c4814000001

做了一遍后突然对人生感到了迷茫,本着不能只有我一个人伤心的原则,只要是程序员的好友我都发了一遍给他们答。

最近亚马逊书满减,凑单买了本javascript实用代码段的书,结果发现原来那个所谓八级测试的始作俑者就是这本··· 结果竟然没有答案···

遂觉得还是整理一遍的好,加上之前自己的一些笔记,和一些扩展,写个总结发出来记录一下。

1,

  1. ["1","2","3"].map(parseInt)
 

 这东西无非是函数参数问题,记得住就答得出来,真没什么卵用。

主要是parseInt的第二个参数,是解析数字的基数,也就是进制,范围为2~36。

比如这道题的第二个运行结果 就是 parseInt('2',1);  参数不符 故是NAN。

第二个运行结果 parseInt('3',2); 二进制里没有3,所以也是NAN。

2

  1. [typeofnull,nullinstanceofObject]
 

 null,array的 typeof 都是object。

但是instanceof还是很严谨的。

不过以下需要注意:

1. instanceof 是判断前者是否为后者的一个实例,所以

javascript专业八级测试答案拾掇

2.判断一个变量的类型上面两种都不好要用这个:

Object.prototype.toString.call(XXX).slice(8,-1);

javascript专业八级测试答案拾掇

3

  1. [[3,2,1].reduce(Math.pow),[].reduce(Math.pow)]]
 

 这个就是新array api的熟悉啦,

reduce也支持两个参数,arr.reduce(callback[, initialValue])   第二个参数··· 就叫他迭代开始吧, arr和initialValue两个参数不能同时为空,上一道题就是同时为空了。

链接里给的答案解析是有一些小问题的。

4是操作符优先级问题,就不说了。

5

这道题涉及的东西是作用域和变量声明。

javaScript是没有块级作用域的,只有函数作用域。所以

if(true){var hehe = 'hehe'}这样写是没错误的。

因为作用域是一样的,当然还有最关键的一点,就是js的提前声明。

代码等同于:

  1. var name ='World!';
  2. (function(){
  3. var name;
  4. if(typeof name ==='undefined'){
  5. name ='Jack';
  6. console.log('Goodbye '+ name);
  7. }else{
  8. console.log('Hello '+ name);
  9. }
  10. })();
 

 所以name是undefined;

6 js最大的数是2^53。

7 pass

8

js没有精确的数值,是因为十进制在转换为计算机用二进制时候的丢失导致的。该死的js并没有对这个误差进行处理。

完整内容见原文链接:http://www.gbtags.com/gb/share/5839.htm