最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

小米公司JavaScript面試題

 更新時(shí)間:2014年12月29日 10:44:42   投稿:hebedich  
這篇文章主要介紹了小米公司JavaScript面試題的個(gè)人解題方法,需要的朋友可以參考下

面試題目

一、

復(fù)制代碼 代碼如下:

 請(qǐng)定義這樣一個(gè)函數(shù)
function repeat (func, times, wait) {
}
這個(gè)函數(shù)能返回一個(gè)新函數(shù),比如這樣用
var repeatedFun = repeat(alert, 10, 5000)
調(diào)用這個(gè) repeatedFun ("hellworld")
會(huì)alert十次 helloworld, 每次間隔5秒

二、

復(fù)制代碼 代碼如下:

寫一個(gè)函數(shù)stringconcat, 要求能
var result1 = stringconcat("a", "b")  result1 = "a+b"
var stringconcatWithPrefix = stringconcat.prefix("hellworld");
var result2 = stringconcatWithPrefix("a", "b")  result2 = "hellworld+a+b"

小菜解法

     這兩道題,考的就是閉包,廢話不多說,直接上代碼。

復(fù)制代碼 代碼如下:

/**
 * 第一題
 * @param func
 * @param times
 * @param wait
 * @returns {repeatImpl}
 */
function repeat (func, times, wait) {
    //不用匿名函數(shù)是為了方便調(diào)試
    function repeatImpl(){
        var handle,
            _arguments = arguments,
            i = 0;
        handle = setInterval(function(){
            i = i + 1;
            //到達(dá)指定次數(shù)取消定時(shí)器
            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);

相關(guān)文章

最新評(píng)論

高雄市| 连山| 京山县| 进贤县| 梧州市| 平湖市| 黄梅县| 砀山县| 鄢陵县| 仪征市| 江都市| 房产| 县级市| 柘城县| 通渭县| 库车县| 西盟| 枝江市| 五寨县| 凤台县| 庆阳市| 若尔盖县| 绥宁县| 维西| 丹巴县| 芦山县| 隆尧县| 江陵县| 千阳县| 咸丰县| 丘北县| 通化县| 黄冈市| 开阳县| 唐海县| 娄底市| 青海省| 成武县| 东兰县| 孝义市| 延津县|