연습 문제.


  • var data = [];
    for(var i = 0; i < 3; i ++) {
    	data[i] = (function(i) {
    		return function() {
    			console.log(i);
    		}
    	}(i))
    }
    data[0]();
    data[1]();
    data[2]();
    
     : 3
    

  •  function fun(n, o) {
        	console.log(o);
        	return {
        		fun : function(m) {
        			return fun(m, n);
        		}
        	};
        }
        var a = fun(0);// fun undefined, a, n=0
       	a.fun(1);// a fun, fun, ,m = 1, fun(1,0)
                 // fun(1,0), 0,  
    	//console.log(typeof(a.fun(1)));//object
    	a.fun(2);// fun(2,0) //0
    	a.fun(3);// fun(3,0) //0
    
    	var b = fun(0).fun(1).fun(2).fun(3)//fun(0) fun(0,0),fun(1) fun(1 , 0), 0, n=1,fun(2) fun(2,1), 1, n=2,fun(3) fun(3,2), 2, n=3;
    	var c = fun(0).fun(1); //undefined 0 
    	c.fun(2); //1
    	c.fun(3);//1
    

  •  function fn1() {
    	   		for(var i = 0; i < 4; i ++) {
    	   			var tc=setTimeout(
    	   					function(i){
    	   						console.log(i);
    	   						console.log(tc);
    	   						clearTimeout(tc)
    	   					}, 10 ,i);
    
    	   		}
    	   }
    	   fn1();
    
     10ms function(i),i 。
     tc 4 。
     function(i) , , 
    

    이 문제는 주로 비동기와 클로즈업 문제의 비동기를 고찰했다. js는 단일 라인이고 한 번에 하나의 명령만 실행할 수 있다.js가 실행될 때 주 작업 대기열을 생성합니다. 대기열에서 순서대로 실행됩니다. setTimeout이 실행될 때 setTimeout은 안에 있는 함수를 비동기 대기열에 저장합니다. setTimeout이 실행된 후에 js는 이벤트loop 이벤트를 통해 순환합니다. 비동기 대기열에 작업이 기다리는 것을 발견하고 팀 i열에 추가하여 실행을 시작합니다.그래서 tc가 마지막으로 보류한 것은 마지막 타이머를 만들고 되돌아오는 값(tc=4)을 만든 후에야 setTimeout의 함수function(i) 클립을 실행하기 시작하는 것이다. setTimeout의 실행이 끝났음에도 불구하고 안에 클립이 생겼고 다시 function을 실행할 때 사용하는 값은 타이머가 실행될 때의 역할 체인에 대응하고 tc가 클립에 저장되지 않았기 때문에 처음cleartimeout(tc)일 때마지막 타이머를 지우고 마지막 set Timeout을 실행하지 않았기 때문에 출력 결과는 0 1 2

  •    function fn2() {
    	   	for(var i = 0; i < 4 ;i ++){
    	   		var tc=setInterval(function(i, tc){
    	   			console.log(i);
    	   			clearInterval(tc)
    	   		},10,i,tc);
    	   	}
    	   }
    
     10Ms, function(i,tc),tc ( )
     undefined,i 1 
     , 10ms 3。
    

    좋은 웹페이지 즐겨찾기