小米公司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 通过json自动生成Dom的代码
Apr 01 Javascript
js使用栈来实现10进制转8进制与取除数及余数
Jun 11 Javascript
jQuery模拟新浪微博首页滚动效果的方法
Mar 11 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
Sep 01 Javascript
Angular4学习教程之DOM属性绑定详解
Jan 04 Javascript
vuex 使用文档小结篇
Jan 11 Javascript
vue自定义指令directive实例详解
Jan 17 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
Vue Extends 扩展选项用法完整实例
Sep 17 Javascript
使用layui 的layedit定义自己的toolbar方法
Sep 18 Javascript
JS字符串和数组如何实现相互转化
Jul 02 Javascript
angular共享依赖的解决方案分享
Oct 15 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 adodb连接不同数据库
2009/03/19 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
Python 除法小技巧
2008/09/06 Python
Python命名空间详解
2014/08/18 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
python tkinter控件布局项目实例
2019/11/04 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
爱与责任演讲稿
2014/05/20 职场文书
工会换届选举方案
2014/05/21 职场文书
学校献爱心活动总结
2014/07/08 职场文书
党员自我剖析材料(群众路线)
2014/10/06 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
班主任高考寄语
2015/02/26 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
初中班主任教育随笔
2015/08/15 职场文书