手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >小米公司JavaScript面试题
小米公司JavaScript面试题
摘要:面试题目一、复制代码代码如下:请定义这样一个函数functionrepeat(func,times,wait){}这个函数能返回一个新函数,...

面试题目

一、

复制代码 代码如下:

请定义这样一个函数

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 < 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面试题】相关文章:

Javascript节点关系实例分析

JavaScript静态的动态

用JavaScript实现对话框的教程

JavaScript中eval函数的问题

JavaScript Date对象详解

网页制作常用Javascript语句

JavaScript基本语法讲解

实现DIV圆角的JavaScript代码

用JavaScript实现页面重定向功能的教程

JavaScript实现将UPC转换成ISBN的方法

精品推荐
分类导航