>웹 프론트엔드 >JS 튜토리얼 >Xiaomi JavaScript 인터뷰 질문_javascript 기술

Xiaomi JavaScript 인터뷰 질문_javascript 기술

WBOY
WBOY원래의
2016-05-16 16:23:411865검색

면접질문

1.

코드 복사 코드는 다음과 같습니다.

그런 기능을 정의해주세요
기능 반복(func, times, wait) {
}
이 함수는 새 함수를 반환할 수 있습니다. 예를 들어 다음과 같이
를 사용하세요. var RepeatFun = 반복(경고, 10, 5000)
이것을 RepeatFun("hellworld")이라고 부르세요
helloworld에 매번 5초 간격으로 10번 경고합니다

2.

코드 복사 코드는 다음과 같습니다.

이 필요한 함수 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 시간
* @param 잠깐
* @returns {repeatImpl}
​*/
기능 반복(func, times, wait) {
//디버깅을 용이하게 하기 위해 익명 함수를 사용하지 않습니다
함수 반복Impl(){
      var 핸들,
​​​​​​ _arguments = 인수,
             i = 0;
         핸들 = setInterval(function(){
             i = i 1;
//지정된 횟수에 도달하면 타이머를 취소합니다
                if(i === 회){
Clearinterval(핸들)
                  반품;
            }
                func.apply(null, _arguments);
},잠깐);
}
반복Impl;
반환 }
//테스트케이스
var RepeatFun = 반복(경고, 4, 3000);
RepeatFun("지옥세계");
/**
*두 번째 질문
* @returns {문자열}
​*/
함수 stringconcat(){
var 결과 = [];
Stringconcat.merge.call(null, 결과, 인수);
결과 반환.join(" ");
}
stringconcat.prefix = 함수(){
var _arguments = [],
​​​​ _this = this;
_this.merge.call(null, _arguments, 인수);
반환함수(){
        var _args = _arguments.slice(0);
​​​​ _this.merge.call(null, _args, 인수);
          return _this.apply(null, _args);
};
};
stringconcat.merge = 함수(배열, 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"
경고(결과1);
경고(결과2);
경고(결과3);
경고(결과4);

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.