小米公司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 CHECKBOX全选,取消全选,反选方法三
Aug 30 Javascript
Javascript倒计时代码
Aug 12 Javascript
js 有框架页面跳转(target)三种情况下的应用
Apr 09 Javascript
javascript中的if语句使用介绍
Nov 20 Javascript
javascript浏览器窗口之间传递数据的方法
Jan 20 Javascript
Javascript实现单例模式
Jan 24 Javascript
jQuery的实例及必知重要的jQuery选择器详解
May 20 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
Aug 16 Javascript
使用node.js对音视频文件加密的实例代码
Aug 30 Javascript
重置Redux的状态数据的方法实现
Nov 18 Javascript
国内常用的js类库大全(CDN公共库)
Jun 24 Javascript
手把手带你搭建一个node cli的方法示例
Aug 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
php遍历数组的4种方法总结
2014/07/05 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
javascript之Partial Application学习
2013/01/10 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
用tensorflow搭建CNN的方法
2018/03/05 Python
Python3中列表list合并的四种方法
2019/04/19 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
django中cookiecutter的使用教程
2020/12/03 Python
CSS3不透明度实例讲解
2016/04/26 HTML / CSS
怎么处理XML的中文问题
2015/03/26 面试题
自荐书格式
2013/12/01 职场文书
给同学的道歉信
2014/01/16 职场文书
商务考察邀请函范文
2014/01/21 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
门市房租房协议书
2014/12/04 职场文书
党员个人年度总结
2015/02/14 职场文书
介绍信范文大全
2015/05/07 职场文书
穆斯林的葬礼读书笔记
2015/06/26 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers