首页 > 网站 > WEB开发 > 正文

小米Web前端JavaScript面试题

2024-04-27 14:16:20
字体:
来源:转载
供稿:网友

小米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);


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表