小米公司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 相关文章推荐
50个比较实用jQuery代码段
Sep 18 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
May 23 Javascript
使用js获取图片原始尺寸
Dec 03 Javascript
使用jquery动态加载js文件的方法
Dec 24 Javascript
Node.js+Express配置入门教程
May 19 Javascript
Asp.Net之JS生成分页条的方法
Nov 23 Javascript
js实现类bootstrap模态框动画
Feb 07 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
在NPM发布自己造的轮子的方法步骤
Mar 09 Javascript
浅谈ECMAScript 中的Array类型
Jun 10 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
Jun 19 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
第十五节--Zend引擎的发展
2006/11/16 PHP
php MYSQL 数据备份类
2009/06/19 PHP
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
PHP URL路由类实例
2013/11/12 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
php日期操作技巧小结
2016/06/25 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
js实时监听文本框状态的方法
2011/04/26 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
python操作excel让工作自动化
2019/08/09 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
一款纯css3实现的漂亮的404页面的实例教程
2014/11/27 HTML / CSS
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
全球在线商店:BerryLook
2019/04/14 全球购物
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
物业管理专业个人的自我评价
2013/11/19 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
婚育证明格式
2015/06/17 职场文书
实习报告范文
2019/07/30 职场文书
Ajax实现异步加载数据
2021/11/17 Javascript