小米公司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去掉字符串里的所有空格
Feb 08 Javascript
Javascript常用运算符(Operators)-javascript基础教程
Dec 14 Javascript
php上传图片并给图片打上透明水印的代码
Jun 07 Javascript
jquery png 透明解决方案(推荐)
Aug 21 Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
Jun 24 Javascript
JavaScript中判断对象类型的几种方法总结
Nov 11 Javascript
微信小程序 传值取值的几种方法总结
Jan 16 Javascript
结合mint-ui移动端下拉加载实践方法总结
Nov 08 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
Aug 09 Javascript
浅谈微信小程序flex布局基础
Sep 10 Javascript
小程序云开发实现数据库异步操作同步化
May 18 Javascript
JavaScript数组排序小程序实现解析
Jan 13 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
CodeIgniter CLI模式简介
2014/06/17 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
php注册审核重点解析(数据访问)
2017/05/23 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
列表内容的选择
2006/06/30 Javascript
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
js使用函数绑定技术改变事件处理程序的作用域
2011/12/26 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
jquery.qtip提示信息插件用法简单实例
2016/06/17 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
JavaScript和JQuery获取DIV值的方法示例
2017/03/07 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
vue实现登录功能
2020/12/31 Vue.js
用实例说明python的*args和**kwargs用法
2013/11/01 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
对python pandas 画移动平均线的方法详解
2018/11/28 Python
Python列表解析操作实例总结
2020/02/26 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
python制作微博图片爬取工具
2021/01/16 Python
英国剑桥包中文官网:The Cambridge Satchel Company中国
2018/11/06 全球购物
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
P/Invoke是什么
2015/07/31 面试题
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏