您好,欢迎访问一九零五行业门户网

小米公司JavaScript面试题_javascript技巧

面试题目
一、
复制代码 代码如下:
请定义这样一个函数
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         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);
其它类似信息

推荐信息