小米公司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ù)制代碼 代碼如下:
寫(xiě)一個(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"
小菜解法
這兩道題,考的就是閉包,廢話不多說(shuō),直接上代碼。
復(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;
}
//測(cè)試用例
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]);
}
}
//測(cè)試用例
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實(shí)現(xiàn)上傳圖片前的預(yù)覽(TX的面試題)
- 一套比較完整的javascript面試題(部分答案)
- 來(lái)自qq的javascript面試題
- 從面試題學(xué)習(xí)Javascript 面向?qū)ο螅▌?chuàng)建對(duì)象)
- 探討Java中最常見(jiàn)的十道面試題(超經(jīng)典)
- 15個(gè)高級(jí)Java多線程面試題及回答
- 5個(gè)JavaScript經(jīng)典面試題
- BAT及各大互聯(lián)網(wǎng)公司2014前端筆試面試題--JavaScript篇
- Java中類的加載順序剖析(常用于面試題)
- JAVA實(shí)現(xiàn)鏈表面試題
- Java實(shí)現(xiàn)棧和隊(duì)列面試題
相關(guān)文章
微信小程序中使用自定義圖標(biāo)(阿里icon)的方法
這篇文章主要介紹了微信小程序中使用自定義圖標(biāo)(阿里icon)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08JavaScript中省略元素對(duì)數(shù)組長(zhǎng)度的影響
這篇文章主要介紹了JavaScript中省略元素對(duì)數(shù)組長(zhǎng)度的影響,本文給大家介紹的非常詳細(xì)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10純js實(shí)現(xiàn)瀑布流布局及ajax動(dòng)態(tài)新增數(shù)據(jù)
這篇文章主要介紹了基于javascript實(shí)現(xiàn)瀑布流布局,及ajax動(dòng)態(tài)新增數(shù)據(jù)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04iScroll中事件點(diǎn)擊觸發(fā)兩次解決方案
iScroll是我們?cè)谧鍪謾C(jī)網(wǎng)頁(yè)中常用的滑動(dòng)控件之一。單說(shuō)其功能已相當(dāng)豐富。但個(gè)別時(shí)候也是會(huì)掉坑的,正好這次就遇上了。在android的app中嵌入網(wǎng)頁(yè)時(shí)不少手機(jī)會(huì)出現(xiàn)一次點(diǎn)擊兩次觸發(fā)的現(xiàn)象。經(jīng)過(guò)一段時(shí)間的折騰,總算想到了一個(gè)還算合理的解決放案。2015-03-03微信小程序 配置頂部導(dǎo)航條標(biāo)題顏色的實(shí)現(xiàn)方法
這篇文章主要介紹了微信小程序 配置頂部導(dǎo)航條標(biāo)題顏色的實(shí)現(xiàn)方法的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09