小米公司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 相关文章推荐
javascript常用对话框小集
Sep 13 Javascript
JavaScript Promise启示录
Aug 12 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
JavaScript数组对象赋值用法实例
Aug 04 Javascript
javascript拖拽效果延伸学习
Apr 04 Javascript
js实现模糊匹配功能
Feb 15 Javascript
ES6中class类用法实例浅析
Apr 06 Javascript
Vue列表页渲染优化详解
Jul 24 Javascript
初学者AngularJS的环境搭建过程
Oct 27 Javascript
javascript中UMD规范的代码推演
Aug 29 Javascript
详解JavaScript函数callee、call、apply的区别
Mar 08 Javascript
JS原形与原型链深入详解
May 09 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
初识php MVC
2014/09/10 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
2015/07/31 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
javascript基础的动画教程,直观易懂
2007/01/10 Javascript
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
javascript multibox 全选
2009/03/22 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
js判断主流浏览器类型和版本号的简单实现代码
2016/05/26 Javascript
再谈Javascript中的基本类型和引用类型(推荐)
2016/07/01 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
python 常见字符串与函数的用法详解
2018/11/23 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
Python用SSH连接到网络设备
2021/02/18 Python
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
巴西购物网站:Submarino
2020/01/19 全球购物
医大实习自我鉴定
2013/12/07 职场文书
委托书格式
2014/08/01 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书