小米公司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实例教程(19) 使用HoTMetal(2)
Dec 23 Javascript
原生js ActiveXObject获取execl里面的值
Nov 01 Javascript
node.js中的fs.futimes方法使用说明
Dec 17 Javascript
原生JavaScript制作微博发布面板效果
Mar 11 Javascript
canvas仿iwatch时钟效果
Mar 06 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
May 11 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
Mar 08 Javascript
微信小程序block的使用教程
Apr 01 Javascript
最后说说Vue2 SSR 的 Cookies 问题
May 25 Javascript
用vuex写了一个购物车H5页面的示例代码
Dec 04 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
Feb 21 Javascript
基于ts的动态接口数据配置的详解
Dec 18 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 获取完整url地址
2008/12/20 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
js 幻灯片的实现
2011/12/06 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
2015/02/28 Javascript
JavaScript中的setMilliseconds()方法使用详解
2015/06/11 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
Angular2开发——组件规划篇
2017/03/28 Javascript
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
《与朱元思书》的教学反思
2014/04/17 职场文书
找工作求职信
2014/07/07 职场文书
高三生物教学反思
2016/02/22 职场文书
Python Matplotlib绘制动画的代码详解
2022/05/30 Python