小米公司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中的其他对象
Jan 16 Javascript
使用jQuery的将桌面应用程序引入浏览器
Nov 19 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
Feb 04 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
Jun 13 Javascript
jQuery实现6位数字密码输入框
Dec 29 Javascript
JavaScript变量类型以及变量作用域详解
Aug 14 Javascript
Vue实现移动端左右滑动效果的方法
Nov 27 Javascript
JavaScript中的 new 命令
May 22 Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 24 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
Jul 19 Javascript
vue中element 的upload组件发送请求给后端操作
Sep 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上传、管理照片示例
2006/10/09 PHP
PHP 数组排序方法总结 推荐收藏
2010/06/30 PHP
php 生成文字png图片的代码
2011/04/17 PHP
php汉字转拼音的示例
2014/02/27 PHP
PHP消息队列用法实例分析
2016/02/12 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
JavaScript 加号(+)运算符号
2009/12/06 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
vue axios同步请求解决方案
2017/09/29 Javascript
bootstrap-Treeview实现级联勾选
2017/11/23 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
python在文本开头插入一行的实例
2018/05/02 Python
python 中如何获取列表的索引
2019/07/02 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
2020/02/15 Python
给老师的道歉信
2014/01/11 职场文书
银行业务授权委托书
2014/10/10 职场文书
房产公证书样本
2015/01/23 职场文书
2015年副班长工作总结
2015/05/15 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
全新239军机修复记
2022/04/05 无线电