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);
  • 相关阅读:
    2017微软秋招A题
    UVA 494 Kindergarten Counting Game
    loss function与cost function
    coderforces 721b
    coderforces719b
    PyQt4打包exe文件
    PyQt4 UI设计和调用 使用eric6
    PyQt4 进度条和日历 代码
    PyQt4 颜色选择,字体选择代码
    PyQt4调用UI文件
  • 原文地址:https://www.cnblogs.com/iyangyuan/p/4119166.html
Copyright © 2011-2022 走看看