天天看點

每日兩道面試題

每日兩道 面試題

20210826 面試題

第一題

var a = 10;
var obj = {
    a:100,
    pro: {
        getPro: () =>{
            console.log(this.a);
        }
    }
}

obj.pro.getPro()
           

解析

  • 首先,全局變量a的值是10,obj對象裡面有兩個key 分别是a和pro,a的值是100,
  • pro則是一個對象,pro裡面的getPro是一個箭頭函數,箭頭函數裡面執行this.a 。
  • 箭頭函數不會建立自己的this,他隻會從自己的作用域的上一層繼承this,是以這裡的this指向window,列印出來的結果就是10

第二題

var a= {n:1};
var b=a;
a.x = a ={n:2};
console.log(a.x);
console.log(b.x);

           

解析

  • 首先,a是一個對象,裡面隻有一個key為n,
  • n的值是1, b=a ,那麼b指向的對象 跟a指向的對象是同一個對象。
  • a.x = a ={n:2},這裡面的**.**點運算 優先級大于 = 的運算優先級,是以a.x 先進行運算
  • a指向的對象中多了一個key為x,接下來運算 = ,指派運算時從右向左進行的,是以會給a對象重新指派,a指向的對象變成了{n:2} ,a.x = a 就是a.x = {n:2}.
  • 運算完畢以後,a現在是{n :2},b現在是 {n:1,x:{n:2}}, 是以列印出來的結果是undefined, {n:2}

繼續閱讀