作家
登录

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

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

51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦!


25个最根本的JavaScript面试问题及谜底

尽管 typeof bar === "object" 是检查 bar 是否对象的靠得住办法,令人惊奇的是在JavaScript中 null 也被认为是对象!

是以,令大年夜多半开辟人员惊奇的是,下面的代码将输出 true (而不是false) 到控制台:

  1. var bar = null; console.log(typeof bar === "object"); // logs true

只要清跋扈这一点,同时检查 bar 是否为 null,就可以很轻易地避免问题:

这种技巧的另一个特点是,许可一个易于引用的(假设更短的)别号用于全局变量。这平日用于,例如,jQuery插件中。jQuery许可你应用jQuery.noConflict(),来禁用 $ 引用到jQuery定名空间。在完成这项工作之后,你的代码仍然可以应用$ 应用这种闭包技巧,如下所示:

  1. (function($) { /* jQuery plugin code referencing $ */ } )(jQuery); 
  1. console.log((bar !== null) && (typeof bar === "object")); // logs false 

要答全问题,还有其他两件工作值得留意:

起首,上述解决筹划将返回 false,当 bar 是一个函数的时刻。在大年夜多半情况下,这是期望行动,但当你也想对函数返回 true 的话,你可以修改膳绫擎的解决筹划为:

  1. console.log((bar !== null) && ((typeof bar === "object") || (typeof bar === "function"))); 

第二,上述解决筹划将返回 true,当 bar 是一个数组(例如,当 var bar = [];)的时刻。在大年夜多半情况下,这是期望行动,因为数组是真正的对象,但当你也想对数组返回 false 时,你可以修改膳绫擎的解决筹划为:

  1. console.log((bar !== null) && (typeof bar === "object") && (toString.call(bar) !== "[object Array]")); 

或者,如不雅你应用jQuery的话:

请留意 Math.ceil() 和 Math.floor() 在膳绫擎的实现中等同于 Math.round()。

  1. console.log((bar !== null) && (typeof bar === "object") && (! $.isArray(bar))); 

2.下面的代码将输出什么到控制台,为什么?

因为 a 和 b 都定义在函数的封闭范围内,并且都始于 var关键字,大年夜多半JavaScript开辟人员期望 typeof a 和 typeof b 在膳绫擎的例子中都是undefined。

然而,事实并非如斯。这狼9依υ?题是,大年夜多半开辟人员将语句 var a = b = 3; 缺点地舆解为是以下声明的简写:

但事实上,var a = b = 3; 实际是以下声明的简写:

  1. b = 3;  
  2. var a = b; 

是以(如不雅你不使悠揭捉?格模式的话),该代码段的输出是:

  1. a defined? false
  2. b defined? true 

并解释你的谜底。

然则, b 若何才能被定义在封闭函数典范围之外呢?是的,既然语句 var a = b =3; 是语句 b = 3; 和 var a = b;的简写, b 最终成为了一个全局变量(因为它没有前缀 var 关键字),是以仍然在范围内甚至封闭函数之外。

须要留意的是,在严格模式下(即应用 use strict),语句var a = b = 3; 将生成ReferenceError: b is not defined的运行时缺点,大年夜而避免任何不然可能会导致的headfakes /bug。 (照样你为什么竽暌功该理所当然地在代码中应用 use strict 的最好例子!)

3.下面的代码将输出什么到控制台,为什么?

  1.  1/11    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      AI、大数据、云计算:重塑金融产业的锋芒利刃

    51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦! 智能科技的出现、大年夜数据风口的到来、生物辨认技巧的广泛应用都在开端影响我们的生活,并开启了一个&>>>详细阅读


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

    地址:http://www.17bianji.com/lsqh/37446.html

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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