每日兩道 面試題
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}