zoukankan      html  css  js  c++  java
  • 小米Web前端JavaScript面试题

    面试题目

    一、

    请定义这样一个函数

    function repeat (func, times, wait) {

    }

    这个函数能返回一个新函数,比如这样用

    var repeatedFun = repeat(alert, 10, 5000)

    调用这个 repeatedFun ("hellworld")

    会alert十次 helloworld, 每次间隔5秒

    二、

    写一个函数stringconcat, 要求能

    var result1 = stringconcat("a", "b")  result1 = "a+b"

    var stringconcatWithPrefix = stringconcat.prefix("hellworld");

    var result2 = stringconcatWithPrefix("a", "b")  result2 = "hellworld+a+b"

    小菜解法

         这两道题,考的就是闭包,废话不多说,直接上代码。

     1 /**
     2  * 第一题
     3  * @param func
     4  * @param times
     5  * @param wait
     6  * @returns {repeatImpl}
     7  */
     8 function repeat (func, times, wait) {
     9     //不用匿名函数是为了方便调试
    10     function repeatImpl(){
    11         var handle,
    12             _arguments = arguments,
    13             i = 0;
    14         handle = setInterval(function(){
    15             i = i + 1;
    16             //到达指定次数取消定时器
    17             if(i === times){
    18                 clearInterval(handle);
    19                 return;
    20             }
    21             func.apply(null, _arguments);
    22         },wait);
    23     }
    24 
    25     return repeatImpl;
    26 }
    27 
    28 //测试用例
    29 var repeatFun = repeat(alert, 4, 3000);
    30 
    31 repeatFun("hellworld");
    32 
    33 
    34 /**
    35  * 第二题
    36  * @returns {string}
    37  */
    38 function stringconcat(){
    39     var result = [];
    40 
    41     stringconcat.merge.call(null, result, arguments);
    42     return result.join("+");
    43 }
    44 
    45 stringconcat.prefix = function(){
    46     var _arguments = [],
    47         _this = this;
    48 
    49     _this.merge.call(null, _arguments, arguments);
    50 
    51     return function(){
    52         var _args = _arguments.slice(0);
    53 
    54         _this.merge.call(null, _args, arguments);
    55         return _this.apply(null, _args);
    56     };
    57 };
    58 
    59 stringconcat.merge = function(array, arrayLike){
    60     var i = 0;
    61 
    62     for(i = 0; i < arrayLike.length; i++){
    63         array.push(arrayLike[i]);
    64     }
    65 }
    66 
    67 
    68 //测试用例
    69 var result1 = stringconcat("a", "b"); //result1 = "a+b"
    70 var result3 = stringconcat("c", "d"); //result1 = "a+b"
    71 
    72 var stringconcatWithPrefix = stringconcat.prefix("hellworld");
    73 var stringconcatWithPrefix1 = stringconcat.prefix("hellworld1");
    74 
    75 var result2 = stringconcatWithPrefix("a", "b"); //result2 = "hellworld+a+b"
    76 var result4 = stringconcatWithPrefix1("c", "d"); //result2 = "hellworld+a+b"
    77 
    78 alert(result1);
    79 alert(result2);
    80 alert(result3);
    81 alert(result4);
  • 相关阅读:
    lucene .NET 搜索图片 功能实现
    (转)权威支持: 选择正确的 WebSphere 诊断工具
    (转)WebSphere 中池资源调优
    (转)使用 DB2 HADR 选择用于灾难恢复的 SUPERASYNC 模式
    (转) DB2 HADR
    (转)DB2 HADR 监控详解
    (转)python高级FTP
    (转)Python的web服务器
    (转)python通过paramiko实现,ssh功能
    (转)request模拟知乎登录(无验证码机制
  • 原文地址:https://www.cnblogs.com/iyangyuan/p/4119166.html
Copyright © 2011-2022 走看看