首页 > 代码库 > 小米Web前端JavaScript面试题
小米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);
小米Web前端JavaScript面试题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。