小米公司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"

小菜解法

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

代码如下:
aram func * @param times * @param wait * @returns {repeatImpl} */ function repeat (func,wait) { //不用匿名函数是为了方便调试 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);

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...