클로즈업 지식 포인트 총결산

3134 단어

문답

  • 폐쇄는 무엇입니까?무슨 작용이 있습니까?클립은 다른 함수 작용역에 접근할 수 있는 변수의 함수로 흔히 볼 수 있는 함수에는 내부 함수가 있고 내부 함수는 외부 함수에 접근하는 국부 변수이다.2.1, 내부 변수 읽기;2, 이러한 변수는 메모리에 저장할 수 있습니다.
  • setTimeout 0이 무슨 역할을 하는지 답: 다른 코드의 실행이 끝난 후 setTimeout 0의 코드를 즉시 실행합니다.0은 실행 지연 시간
  • 을 나타냅니다.

    코드

  • 아래 코드는 얼마나 출력됩니까?fnArri에서 i를 출력하도록 코드를 수정합니다.두 가지 이상의 방법 사용
  •  var fnArr = []; 
    for (var i = 0; i < 10; i ++) {
     fnArr[i] = function(){
     return i;
     }; } 
    console.log( fnArr[3]() ); //10
    

    답:방법1
    var fnArr = [];
     for(var i=0;i<10;i++){
     (function(n){
     fnArr[i] = function(){
     return n;
     };
     })(i);
    console.log( fnArr[3]() );
    

    방법 2
    var fnArr = []
    for (var i = 0; i < 10; i++) { 
    (function() {
     var n = i
     fnArr[n] = function() { 
    return n } }())}
    console.log(fnArr[3]())
    
  • 클러치로 자동차 대상을 봉인하면 다음과 같은 방식으로 자동차 상태
  • 를 획득할 수 있다.
    var Car = (function() {
        var speed = 0;
        function accelerate() {
            speed += 10;
        }
        function decelerate() {
            speed -= 10;
        }
        function getSpeed() {
            console.log(speed);
            return speed;
        }
        function getStatus() {
            if (speed > 0) {
                console.log('running');
            }else {
                console.log('stop');
            }  
        }
        function setSpeed(i) {
            speed = i;
        }
        return {
            accelerate: accelerate,  
            decelerate: decelerate,
            getSpeed: getSpeed,
            getStatus: getStatus,
            setSpeed: setSpeed 
        };
    }());
    
  • 함수를 써서 setTimeout으로 setInterval 기능 시뮬레이션
  • var i = 0
    function intv() {
      setTimeout(function() {
          console.log(i++) 
          intv()
      }, 1000)
    }
    
  • 함수를 써서 setTimeout의 평균 [비고: 새로 추가] 최소 시간 입도
  • 를 계산합니다.
    function getmin(){
        var i = 0;
        var start = Date.now();
        var clock = setTimeout(function(){
            i++;
            if(i === 1000){
                clearTimeout(clock)
                var end = Date.now();
                console.log((end-start)/i);
            }
            clock = setTimeout(arguments.callee,0)
        },0)
    }
    getmin()
    

    다음 코드의 출력 결과는?왜?
    var a = 1;
    setTimeout(function(){
        a = 2;
        console.log(a);
    }, 0);
    var a ;
    console.log(a);
    a = 3;
    console.log(a);
    

    답: 출력 결과는 1, 3, 2.setTimeout(, 0) 때문에 내용을 실행 대열의 마지막에 놓고 다른 실행이 끝난 후에 바로 실행합니다.
    * 다음 코드 출력 결과는?왜?
    var flag = true;
    setTimeout(function(){
        flag = false;
    },0);
    while(flag){}
    console.log(flag);
    

    A:출력이 없습니다.setTimeout은 다른 코드를 실행한 후에 실행하기 때문에 첫 번째 문장을 실행한 후에 아래의while 순환에 도달하고 flag은true이며, 죽은 순환을 위해 빈 문장을 실행하고, 출력이 없습니다.
    *다음 코드 출력은?delayer: 0, delayer:1을 출력하는 방법:...(클로즈업으로 구현)
    for(var i=0;i<5;i++){
        setTimeout(function(){
             console.log('delayer:' + i );
        }, 0);
        console.log(i);
    }
    

    답: 출력은 0, 1, 2, 3, 4,delayer:5(5회)입니다.
    for (var i = 0; i < 5; i++) { 
    setTimeout((function(num) {
     return function() {
     return console.log('delayer: ' + num) }
    }(i)),0) 
    console.log(i)}
    

    좋은 웹페이지 즐겨찾기