JavaScript関数の面接問題(一)

18668 ワード

1.//  javascript ,( )        ,            
// A.  
// B.  
// C.typeOf
// D.New

// JavaScript    ,           ,    :                  ,     :            ,      ,                。
// 3.typeof: typeof              。
// 4.new:new           

// 2.
// for(var i = 0; i < 10; i++) {
// 	setTimeout((function(e) {
// 		return function( ) {
// 			console.log(e);
// 		}
// 	})(i), 1000)
// }

//                    ,                   return                    e,      ,          ,                 e,        ,        0,1,2,3......

``


3.

//     JavaScript  call apply   ,    ?
// A.apply          ,                  
// B.call apply   Function.prototype     ,    function    call、apply  
// C.         ,call                    ,apply  
// D.call            。call                           thisObj       。


// Call()   apply()       ,                。  call(),      this     ,                。(   call()   ,                。  apply() ,           )
// 4.JavaScript       ,     :
// A.     
// B.      
// C.    
// D.    


// JavaScript     6   :
//      、        、    、     、     、       。

//                              ,                 
//                      ,              
//              ,           ,         
// 5.
//  var Product = {    
// count: 1,    
// getCount: function( ) {
// return this.count++;
// }
  
// };
  
// console.log(Product.getCount( ));
  
// var func = Product.getCount;
      
// console.log(func( ));

// 1 NaN
//    this  window,window.count++   undefined++,  js  undefined     Number  ,     NaN
6.// var A = {n:4399};
// var B = function(){this.n = 9999};
// var C = function(){var n = 8888};
// B.prototype = A;
// C.prototype = A;
// var b = new B();
// var c = new C();
// A.n++;
// console.log(b.n);
// console.log(c.n);


//     b.n       b         n   ,        (prototype)   
//     var b = new B()  ,     this.n=9999(  this  b)   b  ,b      n  ,     9999
// console.log(c.n);
//   
//     var c = new C()  ,c       n  ,    ,     (prototype)   n   ,   A.n++(    A  n 4400),     4400
7.
var color = "blue";

function changeColor(){
  var anotherColor = "red";
  function swapColors(){
    var tempColor = anotherColor;
    anotherColor = color;
    color = tempColor;
    //       color、anotherColor  t empColor
  }
  //       color and anotherColor,      tempColor        
  swapColors();
}
changeColor();
//       color,     anotherColor   tempColor
console.log("Color is now " + color);  // Color is now red


       3     :    、changeColor()      swapColors()     。          color     changeColor()。changeColor()           anotherColor        swapColors()   ,               color。swapColors()           tempColor,              。        changeColor()          tempColor。  , swapColors()                   ,               。


8.//      
function a(){
  let b = 10;
  if (true) {
    let b = 20;
    console.log(b);  // 20
  }
  console.log(b);  // 10
}
a();let           b,                   。       var20
9.function SuperType(){
    this.colors = ["red", "blue", "green"];
}

function SubType(){            
}

//     SuperType
SubType.prototype = new SuperType();

var instance1 = new SubType();
instance1.colors.push("black");
alert(instance1.colors);    //"red,blue,green,black"

var instance2 = new SubType();
alert(instance2.colors);    //"red,blue,green,black"


SuperType         colors  ,SuperType                 colors  。 SubType        SuperType  ,SubType.prototype    SuperType     ,             colors   ——          SubType.prototype.colors    。  SubType            colors  。


10.var num = 1;
var myObject = {
  num: 2,
  add: function() {
    this.num = 3;
    (function() {
      console.log(" 1    console:" + this.num);
      this.num = 4;
    })();
    console.log(" 2    console:" + this.num);
  },
  sub: function() {
    console.log(" 3    console:" + this.num);
  }
};

myObject.add();
console.log(" 4    console:" + myObject.num);
console.log(" 5    console:" + num);
var sub = myObject.sub;
sub();

// 1    console:1
// 2    console:3
// 3    console:4
// 4    console:3
// 5    console:4
myObject.add()1    console        ,        ,    1.2  ,       myObject.add()this    myObject。  ,        this  window,         window   ,  , 1    console   11    console     ,this.num = 4,    window   。   5    console   4var sub = myObject.sub;,  sub     window,   3    console    4