面试题目

一、

请定义这样一个函数

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"

小菜解法

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

 /**
* 第一题
* @param func
* @param times
* @param wait
* @returns {repeatImpl}
*/
function repeat (func, times, 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);

最新文章

  1. FreeCodeCamp心得
  2. 使用命令行+ideal 工具实现本地代码项目提交
  3. 通过ADO方式连接数据库
  4. ListView + PopupWindow实现滑动删除
  5. Uva10635 LCS
  6. iOS开发UI篇—推荐两个好用的Xcode插件(提供下载链接)
  7. Learning Scrapy笔记(六)- Scrapy处理JSON API和AJAX页面
  8. boost 线程、互斥体、条件变量
  9. arcgis gdb含下划线_和%的查询 by gisoracle
  10. postfix部署多个Content Filter的方法
  11. C#私房菜[二][提供编程效率的技巧]
  12. json格式数据 ,将数据库中查询的结果转换为json(方式2)
  13. webkit 渲染机制
  14. RabbitMQ内存爆出
  15. Linux进程调度与抢占
  16. BootStrap DateTimePicker的使用
  17. python通过Cookie跳过登录验证码
  18. C#中的 new Random()
  19. 20155304《网络对抗》Exp8 Web基础
  20. 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)

热门文章

  1. 为窗体设置背景图片-UI界面编辑器(SkinStudio)教程
  2. RMQ(范围最值问题)算法学习
  3. C语课设心得分享(三)
  4. 第12章 在.NET中操作XML
  5. Scrum会议10.19
  6. 剑指offer题目51-60
  7. Android编译环境搭建(0818-0819)
  8. 杀死你网站SEO的5个技术
  9. Training Deep Neural Networks
  10. 字符串链接strcat