小米公司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 相关文章推荐
UpdatePanel和Jquery冲突的解决方法
Apr 01 Javascript
javascript学习笔记(一)基础知识
Sep 30 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
Jan 26 Javascript
实例讲解javascript注册事件处理函数
Jan 09 Javascript
javascript的document中的动态添加标签实现方法
Oct 24 Javascript
DOM事件探秘篇
Feb 15 Javascript
iframe与主框架跨域相互访问实现方法
Sep 14 Javascript
vue按需引入element Transfer 穿梭框
Sep 30 Javascript
node puppeteer(headless chrome)实现网站登录
May 09 Javascript
VUE脚手架的下载和配置步骤详解
Apr 01 Javascript
JS实现打字游戏
Dec 17 Javascript
javascript条件式访问属性和箭头函数介绍
Nov 17 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
apache+php+mysql安装配置方法小结
2010/08/01 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
python将ip地址转换成整数的方法
2015/03/17 Python
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
Python字符串切片操作知识详解
2016/03/28 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
Python实现的用户登录系统功能示例
2018/02/05 Python
Django如何自定义分页
2018/09/25 Python
利用python、tensorflow、opencv、pyqt5实现人脸实时签到系统
2019/09/25 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
Python文件操作的面试题
2013/06/22 面试题
交警作风整顿剖析材料
2014/10/11 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技