作家
登录

80%应聘者都不及格的JS面试题

作者: 来源: 2017-04-11 12:02:03 阅读 我要评论

  •  
  •  
  •   
  •  
  • console.log(new Date, i);  
  • 奇妙的应用 IIFE(Immediately Invoked Function Expression:声明即履行的函数表达式)来解决闭包造成的问题,确切是不错的思路,然则初学者可能并不认为如许的代码很好懂,至少笔者初入门的时刻这里揣摩了一会儿才真正懂得。

    有没有更相符直觉的做法?谜底是有,我们只须要对轮回体稍做四肢举动,让负责输出的那段代码能拿到每次轮回的 i 值即可。该怎么做呢?应用 JS 中根本类型(Primitive Type)的参数传递是按值传递(Pass by Value)的特点,不难改革出下面的代码:

    1. var output = function (i) { 
    2.  
    3.     setTimeout(function() { 
    4.  
    5.         console.log(new Date, i); 
    6.  
    7.     }, 1000); 
    8.  
    9. }; 
    10.  
    11.   
    12.  
    13. for (var i = 0; i < 5; i++) { 
    14.  
    15.     output(i);  // 这里传以前的 i 值被复制了 
    16.  
    17.  
    18.   
    19.  
    20. console.log(new Date, i);  

    能给出上述 2 种解决筹划的候选人可以认为对 JS 基本的懂得和应用是不错的,可以各加 10 分。当然实际面试中还有候选人给出如下的代码:

    1. for (let i = 0; i < 5; i++) { 
    2.  
    3.     setTimeout(function() { 
    4.  
    5.         console.log(new Date, i); 
    6.  
    7.     }, 1000); 
    8.  
    9.  
    10.   
    11.  
    12. console.log(new Date, i);  

    如不雅到这里算是合格的话,100 小我参加面试只有 20 人能合格,读到这里的同窗可以细心思虑,你合格了么?

    能想到 ES6 特点的同窗固然没有答对,然则展示了本身对 ES6 的懂得,可以加 5 分,持续进行下面的追问。

    总结

    追问 2:ES6

    有经验的前端同窗读到这里可能有些不耐烦了棘扯了这么多,都是他知道的内容,先别焦急,挑衅的难度会持续增长。

    接着上文持续追问:如不雅期望代码的输出变成 0 -> 1 -> 2 -> 3 -> 4 -> 5,并且请求原有的代码块中的轮回和两处 console.log 不变,该怎么改革代码?新的需求可以精确的描述为:代码履行时,急速输出 0,之后每隔 1 秒依次输出 1,2,3,4,轮回停止后在大年夜概第 5 秒的时刻输出 5(这里应用大年夜概,是为了避免钻牛角尖的同窗陷进去,因为 JS 中的准时器触发机会有可能是不肯定的,具体可拜见 How Javascript Timers Work)。

    看到这里,部分同窗会给出下面的可行解:

    1. for (var i = 0; i < 5; i++) { 
    2.  
    3.     (function(j) { 
    4.  
    5.         setTimeout(function() { 
    6.  
    7.             console.log(new Date, j); 

        推荐阅读

        Apache Beam 剖析

      $ mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \ -Dexec.args="--runner=SparkRunner --inputFile=pom.xml --output=counts" -Pspark-runner 1.概述在大>>>详细阅读


      本文标题:80%应聘者都不及格的JS面试题

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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