小米公司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或asp实现的判断身份证号码是否正确两种验证方法
Nov 26 Javascript
JS date对象的减法处理实现代码
Dec 28 Javascript
jquery插件orbit.js实现图片折叠轮换特效
Apr 14 Javascript
jquery+php随机生成红包金额数量代码分享
Aug 27 Javascript
JavaScript中的时间处理小结
Feb 24 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
Mar 16 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
May 16 Javascript
基于Vue实现支持按周切换的日历
Sep 24 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
Aug 27 Javascript
vue2.0自定义指令示例代码详解
Apr 25 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
Jul 08 Javascript
vue路由切换之淡入淡出的简单实现
Oct 31 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中函数的形参与实参的问题说明
2010/09/01 PHP
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
2017/03/24 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
如何用PHP实现邮件发送
2012/12/26 面试题
学期研究性学习个人的自我评价
2014/01/09 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
医院安全生产月活动总结
2014/07/05 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
2022/05/04 Python
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS