小米公司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 作用域使用说明
Aug 13 Javascript
javascript call方法使用说明
Jan 11 Javascript
JS动态改变浏览器标题的方法
Apr 06 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
Apr 17 Javascript
jquery遍历table的tr获取td的值实现方法
May 19 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
Jul 07 Javascript
vue短信验证性能优化如何写入localstorage中
Apr 25 Javascript
Vue中对比scoped css和css module的区别
May 17 Javascript
微信小程序文章详情页面实现代码
Sep 10 Javascript
VUE简单的定时器实时刷新的实现方法
Jan 20 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
Jul 19 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
Aug 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
在数据量大(超过10万)的情况下
2007/01/15 PHP
什么是MVC,好东西啊
2007/05/03 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
php中的比较运算符详解
2013/10/28 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
PHP连接access数据库
2015/03/27 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
解决python中无法自动补全代码的问题
2018/12/04 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
Python中os模块功能与用法详解
2020/02/26 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
养殖项目策划书范文
2014/01/13 职场文书
教师节活动主持词
2014/04/02 职场文书
服务行业标语口号
2015/12/26 职场文书
如何用python反转图片,视频
2021/04/24 Python