앞머리 면접문제. - 중간에 실수한 구덩이.

2435 단어
[TOC]
클로즈업 정보
문제1: 다음 프로그램의 출력 문제
for(var i=1;i<5;++i){
 setTimeout(function timer(){ 
   console.log(i);
 },i*1000);
}
  • 이것은 가장 간단한 것이다. i는 매초에 하나를 출력한다
  • 해결 방식은 매우 간단하다. 바로 클로즈업
  • 으로 해결한다.
    for(var i=1;i<5;++i){
    (function(i){ 
    setTimeout(function timer(){ 
       console.log(i);
     },i*1000); 
    })(i);}
    
  • ES6 let-클로즈업된 블록급 작용역으로 해결
  • for(let i=1;i<5;++i){ 
    setTimeout(function timer(){
     console.log(i); 
    },i*1000);}
    

    문제2: 다음 프로그램에서 무엇을 출력합니까
    var name = 'global';
    var obj = { 
     name : 'obj', 
     dose : function(){ 
      this.name = 'dose'; 
      return function(){
         return this.name; 
        } 
       }
    }
    alert(obj.dose().call(this))
    //alert(obj.dose().call(obj))          ```
    *           ,     call,bind,apply       ,         
    
    **   :** ES5       
    *            ,     ?  ,     
    *      :        。        ,        ,        ,      
    

    var consts=(function(){ var constant=10; var p={}; p.get_consts=function(){ return constant; } return p; })();

    var gconst=consts.get_consts();

    
    **   :**         
    *   
    >http://developer.51cto.com/art/201511/498268.htm
    
    

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

    *          ,          ,      。 ,          ,      。        
    
    ##   JS  
    *         ,     ,      
    *   
    > http://www.cnblogs.com/xxcanghai/p/5189353.html
    
    

    function Foo() {
    getName = function () {
    alert (1);
    };
    return this;
    }
    Foo.getName = function () {
    alert (2);
    };
    Foo.prototype.getName = function () {
    alert (3);
    };
    var getName = function () {
    alert (4);
    };
    function getName() {
    alert (5);
    }
    // :
    Foo.getName();
    getName();
    Foo().getName();
    getName();
    new Foo.getName();
    new Foo().getName();
    new new Foo().getName();

    *               

    좋은 웹페이지 즐겨찾기