小米公司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);
您可能感興趣的文章:
- javascript實(shí)現(xiàn)上傳圖片前的預(yù)覽(TX的面試題)
- 一套比較完整的javascript面試題(部分答案)
- 來自qq的javascript面試題
- 從面試題學(xué)習(xí)Javascript 面向?qū)ο螅▌?chuàng)建對(duì)象)
- 探討Java中最常見的十道面試題(超經(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)文章
微信小程序 仿美團(tuán)分類菜單 swiper分類菜單
本文主要介紹了微信小程序仿美團(tuán)分類菜單(swiper分類菜單)的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-04-04
JS獲取一個(gè)表單字段中多條數(shù)據(jù)并轉(zhuǎn)化為json格式
這篇文章主要介紹了JS獲取一個(gè)表單字段中多條數(shù)據(jù)并轉(zhuǎn)化為json格式的相關(guān)資料,需要的朋友可以參考下2017-10-10
小程序websocket心跳庫(websocket-heartbeat-miniprogram)
這篇文章主要介紹了小程序websocket心跳庫(websocket-heartbeat-miniprogram),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
兼容低版本IE的JScript5.5實(shí)現(xiàn)
兼容低版本IE的JScript5.5實(shí)現(xiàn)...2006-09-09
js 定義對(duì)象數(shù)組(結(jié)合)多維數(shù)組方法
下面小編就為大家?guī)硪黄猨s 定義對(duì)象數(shù)組(結(jié)合)多維數(shù)組方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07
利用原生js和jQuery實(shí)現(xiàn)單選框的勾選和取消操作的方法
下面小編就為大家?guī)硪黄迷鷍s和jQuery實(shí)現(xiàn)單選框的勾選和取消操作的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09

