小米公司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 相关文章推荐
jQuery插件开发基础简单介绍
Jan 07 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
Jun 05 Javascript
Jquery 表单验证类介绍与实例
Jun 09 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
Jan 13 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
Aug 27 Javascript
编写高性能Javascript代码的N条建议
Oct 12 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
Oct 27 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
Mar 10 Javascript
vue脚手架搭建过程图解
Jun 06 Javascript
JavaScript获取页面元素的常用方法详解
Sep 28 Javascript
VUEX 数据持久化,刷新后重新获取的例子
Nov 12 Javascript
jquery实现淡入淡出轮播图效果
Dec 13 jQuery
谷歌浏览器调试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中常见数据类型的汇总分享
2014/01/06 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
php 中的信号处理操作实例详解
2020/03/04 PHP
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
初始Nodejs
2014/11/08 NodeJs
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
javascript实现支持移动设备画廊
2015/08/24 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
URL中“#” “?” &amp;“”号的作用浅析
2017/02/04 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
python多线程分块读取文件
2019/08/29 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
Python环境搭建过程从安装到Hello World
2021/02/05 Python
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
专科毕业生就业推荐信
2013/11/01 职场文书