小米公司JavaScript面试题


Posted in Javascript onDecember 29, 2014

面试题目

一、

 请定义这样一个函数

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);
Javascript 相关文章推荐
jQuery中的常用事件总结
Dec 27 Javascript
JavaScript 浏览器验证代码(来自discuz)
Jul 17 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
Mar 31 Javascript
javascript实现动态改变层大小的方法
May 14 Javascript
JavaScript中用toString()方法返回时间为字符串
Jun 12 Javascript
JS比较两个数值的大小实例
Nov 25 Javascript
Vue.js上下滚动加载组件的实例代码
Jul 17 Javascript
微信小程序实现手势图案锁屏功能
Jan 30 Javascript
webpack vue项目开发环境局域网访问方法
Mar 20 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
Apr 27 Javascript
细说webpack6 Babel的使用详解
Sep 26 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
Nov 07 Javascript
谷歌浏览器调试JavaScript小技巧
Dec 29 #Javascript
JavaScript中的console.trace()函数介绍
Dec 29 #Javascript
JavaScript中的console.profile()函数详细介绍
Dec 29 #Javascript
jQuery中element选择器用法实例
Dec 29 #Javascript
JavaScript中的console.time()函数详细介绍
Dec 29 #Javascript
JavaScript前端图片加载管理器imagepool使用详解
Dec 29 #Javascript
JavaScript版的TwoQueues缓存模型
Dec 29 #Javascript
You might like
Yii中render和renderPartial的区别
2014/09/03 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
PHP打印输出函数汇总
2016/08/28 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
JQuery EasyUI 日期控件如何控制日期选择区间
2014/05/05 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
python3编码问题汇总
2016/09/06 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
python组合无重复三位数的实例
2018/11/13 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
利用Python脚本批量生成SQL语句
2020/03/04 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
Overload和Override的区别
2012/09/02 面试题
个人素质的自我评价分享
2013/12/16 职场文书
会计学专业求职信
2014/07/17 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
农村文化建设标语
2014/10/07 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书
超市店长竞聘书
2015/09/15 职场文书
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL