• 技术文章 >web前端 >js教程

    小米公司JavaScript面试题_javascript技巧

    2016-05-16 16:23:41原创877
    面试题目

    一、

    复制代码 代码如下:

    请定义这样一个函数
    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);
    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:JavaScript 面试题
    上一篇:JavaScript常用小技巧小结_javascript技巧 下一篇:JavaScript中的alert()函数使用技巧详解_javascript技巧
    大前端线上培训班

    相关文章推荐

    • javascript如何求图形的面积• javascript暂停功能如何实现• javascript如何改变HTML内容• javascript object怎么转json• javascript怎么设置字体大小

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网