作家
登录

25个最基本的JavaScript面试问题及答案

作者: 来源: 2017-09-15 11:56:10 阅读 我要评论

 

一种半靠得住的办法来测试一个数字是否等于 NaN,是应用内置函数 isNaN(),但即使应用 isNaN() 依然并非是一个完美的解决筹划。

一个更好的解决办法是应用 value !== value,如不雅值等于NaN,只会产生true。别的,ES6供给了一个新的 Number.isNaN() 函数,这是一个不合的函数,并且比老的全局 isNaN() 函数更靠得住。

8.下列代码将输出什么?并解释原因。

  1. console.log(0.1 + 0.2);  
  2. console.log(0.1 + 0.2 == 0.3); 

一个稍微有点编程基本的答复是:“你不克不及肯定。可能会输出“0.3”和“true”,也可能不会。JavaScript中的数字和浮点精度的处理雷同,是以,可能不会老是产生预期的结不雅。“

以上所供给的例子就是一个演示了这个问题的典典范子。但进出意表的是,它会输出:

  1. 0.30000000000000004 
  2. false 

9.评论辩论写函数 isInteger(x) 的可能办法,用于肯定x是否是整数。

这可能听起来是小菜一碟,但事实上,这很琐碎,因为ECMAScript 6惹人了一个新的┞俘以此为目标 Number.isInteger() 函数。然而,之前的ECMAScript 6,会更复杂一点,因为没有供给类似的 Number.isInteger() 办法。

问题是,在ECMAScript规格解释中,整数只概念上存在:即,数字值老是存储为浮点值。

推敲到这一点,最简荡竽暌怪最干净的ECMAScript6之前的解决办法(同时也异常稳健地返回 false ,即矢荷琐非数字的值,如字符串或 null ,被传递给函数)如下:

  1. function isInteger(x) {  
  2.   return (x^0) === x; 

下面的解决办法也是可行的,固然不如膳绫擎那个办法优雅:

  1. function isInteger(x) {  
  2.   return Math.round(x) === x; 

或:

  1. function isInteger(x) {  
  2.   return (typeof x === 'number') && (x % 1 === 0); 

相当广泛的一个不精确的解决筹划是:

  1. function isInteger(x) {  
  2.   return parseInt(x, 10) === x;  

固然这个以 parseInt函数为基本的办法在 x 取很多值时都能工作优胜,但一旦 x 取值相昔时夜的时刻,就会无法正常工作。问题在于 parseInt() 在解析数字之前强迫其第一个参数到字符串。是以,一旦数量变得足够大年夜,它的字符串就会表达为指数情势(例如, 1e+21)。是以,parseInt() 函数就会去解析 1e+21,但当达到 e字符串的时刻,就会停止解析,是以只会返回值 1。留意:

  1. > String(1000000000000000000000)   '1e+21'    
  2. > parseInt(1000000000000000000000, 10)   1    
  3. > parseInt(1000000000000000000000, 10) === 1000000000000000000000    
  4. false 

10.下列代码行1-4若何排序,使之可以或许在履行代码时输出到控制台? 为什么?

  1. (function() {  
  2.   console.log(1); 
  3.   setTimeout(function(){console.log(2)}, 1000);     
  4.   setTimeout(function(){console.log(3)}, 0);  
  5.   console.log(4);  
  6. })(); 

序号如下:

让我们先来解释比脚绫趋显而易见的那部分:

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)