인터뷰 질문
하나,
코드 사본은 다음과 같습니다.
그러한 함수를 정의하십시오
함수 반복 (func, times, wait) {
}
예를 들어이 기능은 새 기능을 반환 할 수 있습니다
var repeatedfun = 반복 (Alert, 10, 5000)
이것을 반복 펀 ( "Hellworld")이라고 부릅니다.
HelloWorld가 10 번, 매번 간격이 5 초입니다.
둘,
코드 사본은 다음과 같습니다.
기능이 필요한 함수 stringConcat을 작성하십시오
var result1 = StringConcat ( "a", "b") result1 = "a+b"
var stringconcatwithprefix = StringConcat.prefix ( "Hellworld");
var result2 = StringCancatWithPrefix ( "a", "b") result2 = "hellworld+a+b"
반찬 솔루션
이 두 질문은 폐쇄를 테스트합니다. 말도 안되는 말을하지 않고 코드를 입력하십시오.
코드 사본은 다음과 같습니다.
/**
* 질문 1
* @param func
* @param 시간
* @param 대기
* @returns {repeatimpl}
*/
함수 반복 (func, times, wait) {
// 디버깅을 용이하게하기 위해 익명 함수가 사용되지 않습니다
함수 repeatimpl () {
var 핸들,
_arguments = 인수,
i = 0;
핸들 = setInterVal (function () {
i = i + 1;
// 지정된 숫자가 시간을 취소 할 때 타이머를 취소합니다
if (i === Times) {
ClearInterval (핸들);
반품;
}
func.apply (null, _arguments);
},기다리다);
}
반복 반복 impl;
}
// 테스트 케이스
var repeatfun = 반복 (Alert, 4, 3000);
반복 펀 ( "Hellworld");
/**
* 질문 2
* @returns {String}
*/
함수 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);
반환 _this.apply (null, _args);
};
};
StringConcat.merge = function (배열, 배열) {
var i = 0;
for (i = 0; i <arraylike.length; i ++) {
Array.push (배열 같은 [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 = StringCancatWithPrefix ( "a", "b"); // result2 = "hellworld+a+b"
var result4 = stringCanCatWithPrefix1 ( "C", "D"); // result2 = "hellworld+a+b"
경고 (결과 1);
경고 (결과 2);
경고 (결과 3);
경고 (결과 4);