作家
登录

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

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

key:'b'}, c={key:'c'};  
  • a[b]=123;  
  • a[c]=456;  
  • console.log(a[b]); 
  • 这段代码将输出 456(而不是 123)。

    原因为:当设置对象属性时,JavaScript会阴郁字符串化参数值。在这种情况下,因为 b 和 c都是对象,是以它们都将被转换为"[object Object]"。结不雅就是, a[b]和a[c]均相当于a["[object Object]"] ,并可以交换应用。是以,设置或引用 a[c]和设置或引用 a[b]完全雷同。

    22.以下代码行将输出什么到控制台?

    代码将输出10!的值(即10!或3628800)。

    原因是:

    f(1): returns n, which is 1 f(2): returns 2 * f(1), which is 2 f(3): returns 3 * f(2), which is 6 f(4): returns 4 * f(3), which is 24 f(5): returns 5 * f(4), which is 120 f(6): returns 6 * f(5), which is 720 f(7): returns 7 * f(6), which is 5040 f(8): returns 8 * f(7), which is 40320 f(9): returns 9 * f(8), which is 362880 f(10): returns 10 * f(9), which is 3628800

    定名函数 f()递归地调用本身,当调用 f(1)的时刻,只简单地返回1。下面就是它的调用过程:

    23.请看下面的代码段。控制台将输出什么,为什么?

    1. (function(x) { return (function(y) { console.log(x); })(2) })(1); 

    控制台将输出 1,即使大年夜来没有在函数内部设置过x的值。原因是:

    正如我们在JavaScript雇用指南中解释过的那样,闭包是一个函数,连同在闭包创建的时刻,其范围内的所有变量或函数一路。在JavaScript中,闭包是作为一个“内部函数”实施的:即,另一个函数主体内定义的函数。闭包的一个重要特点是,内部函数仍然有权拜访外部函数的变量。

    是以,在本例中,因为 x未在函数内部中定义,是以在外部函数范围中搜刮定义的变量 x,且被发明具有1的值。

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

    1. var hero = { _name: 'John Doe', getSecretIdentity: function (){ return this._name; } }; 
    2. var stoleSecretIdentity = hero.getSecretIdentity; 
    3. console.log(stoleSecretIdentity()); 
    4. console.log(hero.getSecretIdentity()); 

    代码有什愦问题,以及应当若何修复。

    代码将输出:

    1. undefined  
    2. John  
    3. Doe 

    第一个 console.log之所以输出 undefined,是因为我们正在大年夜 hero对象提取办法,所声调用了全局高低文中(即窗口对象)的 stoleSecretIdentity(),而在此全局高低文中, _name属性不存在。

    个一一种修复stoleSecretIdentity() 函数的办法如下:

    1. var stoleSecretIdentity = hero.getSecretIdentity.bind(hero); 

    25.创建一个给定页面上的一个DOM元素,就会去拜访元素本身及其所有子元素(不只是它的直接子元素)的函数。对于每个被拜访的元素,函数应当传递元素到供给的回调函数。

    此函数的参数为:

    DOM元素

    回调函数(将DOM元素作为其参数)

    拜访树(DOM)的所有元素是经典的深度优先搜刮算法应用。下面是一个示范的解决筹划:

    1. function Traverse(p_element,p_callback) {  
    2.     p_callback(p_element);  
    3.     var list = p_element.children;  
    4.     for (var i = 0; i < list.length; i++) {    
    5.          Traverse(list[i],p_callback);  
    6.          // recursive call  
    7.     } 
    8. }  

    【编辑推荐】

    1. 当JavaScript 赶上物联网(IoT)
    2. JavaScript Event Loop机制详解与Vue.js中nextTick的实践应用
    3. 进修若何应用Chrome DevTools调试JavaScript
    4. 十个免费的web前端开辟对象 – Envato – Medium
    5. JavaScript感化域和闭包
    【义务编辑:庞桂玉 TEL:(010)68476606】

      推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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