小米公司JavaScript面試題
更新時間:2014年12月29日 10:44:42 投稿:hebedich
這篇文章主要介紹了小米公司JavaScript面試題的個人解題方法,需要的朋友可以參考下
面試題目
一、
復制代碼 代碼如下:
請定義這樣一個函數(shù)
function repeat (func, times, wait) {
}
這個函數(shù)能返回一個新函數(shù),比如這樣用
var repeatedFun = repeat(alert, 10, 5000)
調(diào)用這個 repeatedFun ("hellworld")
會alert十次 helloworld, 每次間隔5秒
二、
復制代碼 代碼如下:
寫一個函數(shù)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) {
//不用匿名函數(shù)是為了方便調(diào)試
function repeatImpl(){
var handle,
_arguments = arguments,
i = 0;
handle = setInterval(function(){
i = i + 1;
//到達指定次數(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)文章
純js實現(xiàn)瀑布流布局及ajax動態(tài)新增數(shù)據(jù)
這篇文章主要介紹了基于javascript實現(xiàn)瀑布流布局,及ajax動態(tài)新增數(shù)據(jù)的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-04-04

