小米公司JavaScript面试题

前端之家收集整理的这篇文章主要介绍了小米公司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"

小菜解法

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

代码如下:
函数是为了方便调试 function repeatImpl(){ var handle, _arguments = arguments, i = 0; handle = setInterval(function(){ i = i + 1; //到达指定次数取消定时器 if(i === times){ clearInterval(handle); return; } func.apply(null,_arguments); },wait); } return repeatImpl; } //测试用例 var repeatFun = repeat(alert,4,3000); repeatFun("hellworld"); /** * 第二题 * @returns {string} */ function stringconcat(){ var result = []; stringconcat.merge.call(null,result,arguments); return result.join("+"); } stringconcat.prefix = function(){ var _arguments = [], _this = this; _this.merge.call(null,_arguments,arguments); return function(){ var _args = _arguments.slice(0); _this.merge.call(null,_args,arguments); return _this.apply(null,_args); }; }; stringconcat.merge = function(array,arrayLike){ var i = 0; for(i = 0; i < arrayLike.length; i++){ array.push(arrayLike[i]); } } //测试用例 var result1 = stringconcat("a","b"); //result1 = "a+b" var result3 = stringconcat("c","d"); //result1 = "a+b" var stringconcatWithPrefix = stringconcat.prefix("hellworld"); var stringconcatWithPrefix1 = stringconcat.prefix("hellworld1"); var result2 = stringconcatWithPrefix("a","b"); //result2 = "hellworld+a+b" var result4 = stringconcatWithPrefix1("c","d"); //result2 = "hellworld+a+b" alert(result1); alert(result2); alert(result3); alert(result4);

猜你在找的JavaScript相关文章