小米公司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 仿关机效果的图片层
Dec 26 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
Oct 11 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
Mar 03 Javascript
JavaScript将数组转换成CSV格式的方法
Mar 19 Javascript
JS动态改变表格边框宽度的方法
Mar 31 Javascript
JavaScript中计算网页中某个元素的位置
Jun 10 Javascript
用move.js库实现百叶窗特效
Feb 08 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
Mar 01 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
Jan 18 Javascript
layui表单验证select下拉框实现验证的方法
Sep 05 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
Sep 24 Javascript
vue 返回上一页,页面样式错乱的解决
Nov 14 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多进程应用场景实例详解
2019/07/22 PHP
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
node.js调用Chrome浏览器打开链接地址的方法
2017/05/17 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
python逐行读取文件内容的三种方法
2014/01/20 Python
windows下python安装pip图文教程
2018/05/25 Python
python中利用h5py模块读取h5文件中的主键方法
2018/06/05 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
Python常用模块logging——日志输出功能(示例代码)
2019/11/20 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
Python列表推导式实现代码实例
2020/09/09 Python
Python爬取网页信息的示例
2020/09/24 Python
python的setattr函数实例用法
2020/12/16 Python
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
大学生专业个人学习的自我评价
2013/10/26 职场文书
办公室保洁员岗位职责
2013/12/02 职场文书
中学生期末评语
2014/02/03 职场文书
银行金融服务方案
2014/06/11 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
初中数学课堂教学反思
2016/02/17 职场文书