10个 JavaScript 变态题解析_极悦注册

10个 JavaScript 变态题解析


  今天有参加面试的同学,发给了动宝儿10个超级变态面试题,说是让我也感受一下这个酸爽,动宝儿想,独乐乐不如众乐乐,分享给大家感受一下。


  第1题


  vara=111111111111111110000,


  b=1111;


  a+b;


  答案还是111111111111111110000.解释是LackofprecisionfornumbersinJavaScriptaffectsbothsmallandbignumbers.但是笔者不是很明白…………….请读者赐教!


  第2题


  varx=[].reverse;


  x();


  这个题有意思!


  知识点:


  • Array/reverse


  Thereversemethodtransposestheelementsofthecallingarrayobjectinplace,mutatingthearray,andreturningareferencetothearray.


  也就是说最后会返回这个调用者(this),可是x执行的时候是上下文是全局.那么最后返回的是window.


  答案是window


  第3题


  Number.MIN_VALUE>0


  true


  第4题


  [1<2<3,3<2<1]


  这个题也还可以.


  这个题会让人误以为是2>1&&2<3其实不是的.


  这个题等价于


  1<2=>true;


  true<3=>1<3=>true;


  3<2=>false;


  false<1=>0<1=>true;


  答案是[true,true]


  第5题


  //themostclassicwtf


  2==[[[2]]]


  这个题我是猜的.我猜的true,至于为什么…..


  bothobjectsgetconvertedtostringsandinbothcasestheresultingstringis"2"我不能信服…


  第6题


  3.toString()


  3..toString()


  3...toString()


  这个题也挺逗,我做对了答案是error,'3',error


  你如果换一个写法就更费解了


  vara=3;


  a.toString()


  这个答案就是'3';


  为啥呢?


  因为在js中1.1,1.,.1都是合法的数字.那么在解析3.toString的时候这个.到底是属于这个数字还是函数调用呢?只能是数字,因为3.合法啊!


  第7题


  (function(){


  varx=y=1;


  })();


  console.log(y);


  console.log(x);


  答案是1,error


  y被赋值到全局.x是局部变量.所以打印x的时候会报ReferenceError


  第8题


  vara=/123/,


  b=/123/;


  a==b


  a===b


  即使正则的字面量一致,他们也不相等.


  答案false,false


  第9题


  vara=[1,2,3],


  b=[1,2,3],


  c=[1,2,4]


  a==b


  a===b


  a>c


  a<c


  字面量相等的数组也不相等.


  数组在比较大小的时候按照字典序比较


  答案false,false,false,true


  第10题


  vara={},b=Object.prototype;


  [a.prototype===b,Object.getPrototypeOf(a)===b]


  知识点:


  • Object/getPrototypeOf


  只有Function拥有一个prototype的属性.所以a.prototype为undefined.


  而Object.getPrototypeOf(obj)返回一个具体对象的原型(该对象的内部[[prototype]]值)


  答案false,true


  


上一篇:聘请移动应用开发者的10个技巧
下一篇:大龄程序员怎样渡过中年危机?

开班信息