클로즈업 임무

3459 단어

제목1:


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

/*         ,     i      10,        
*/

코드를 수정하고 클립으로 매번 i 의 값을 저장합니다.
//  1:    IIFE(      )
var fnArr = [];
for (var i = 0; i < 10; i++) {
    fnArr[i] = function(i){
        return function(){
            return i
        };
    }(i)

}
console.log(fnArr[3]()); // 3

/*              ,      ,
         i   。      ,       i   。
        ,      。
*/
//  2: let            
var fnArr = [];
for (let i = 0; i < 10; i ++) {
    fnArr[i] =  function(){
        return i;
    };
}
console.log( fnArr[3]() );  //3

제목 2:


자동차 대상을 봉인하면 다음과 같은 방식으로 자동차 상태를 얻을 수 있다
var Car = function(){
   var speed = 0;
   function setSpeed(s){
       speed = s              //        
   }
   function getSpeed(){
       return speed;          //         
   }
   function accelerate(){
       speed += 10;           //    ,  10
   }
   function decelerate(){
       speed -=10;            //    ,  10
   }
   function getStatus(){
       if(0 < speed){
           return "running"   //      0,   running
       }
       if(0 === speed){
           return "stop"      //      0,   stop
       }
       if(0 > speed){
           return "backing"   //      0,   backing
       }
   }
   return {    /*return    ,       ,       */
      setSpeed: setSpeed,
      getSpeed: getSpeed,
      accelerate: accelerate,
      decelerate: decelerate,
      getStatus: getStatus,
   }
}()
Car.setSpeed(30);
Car.getSpeed(); //30
Car.accelerate();
Car.getSpeed(); //40;
Car.decelerate();
Car.decelerate();
Car.getSpeed(); //20
Car.getStatus(); // 'running';
Car.decelerate(); 
Car.decelerate();
Car.getStatus();  //'stop';

제목 3:


다음 코드의 출력 결과는?왜?
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      ,        
*/

제목 4:


다음 코드의 출력 결과는?왜?
// !!!         ,    
var flag = true;
setTimeout(function(){
    flag = false;
},0)
while(flag){}
console.log(flag);

/*        ,      
  setTimeout    ,         ,
  while        true,         ,
   js        ,      
*/

제목 5:


다음 코드 출력은?출력 방법 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 
delayer:5 
delayer:5
delayer:5
delayer:5
*/

delayer: 0, delayer:1을 출력하려면...다음과 같은 방법이 있다
  • 방법1
  • //       :
    for(var i=0;i<5;i++){
        setTimeout(function(i){
            return function(){
                console.log('delayer:' + i );
            }
        }(i)
            , 0);
        console.log(i);
    }
    
    /*0 1 2 3 4 
    delayer:0 
    delayer:1 
    delayer:2
    delayer:3
    delayer:4
    */
    
  • 방법2
  • // let      
    for(let i=0;i<5;i++){
        setTimeout(function(){
             console.log('delayer:' + i );
        }, 0);
        console.log(i);
    }
    
    /*0 1 2 3 4 
    delayer:0 
    delayer:1 
    delayer:2
    delayer:3
    delayer:4
    */
    

    좋은 웹페이지 즐겨찾기