每日两道面试题

每日两道 面试题

20210826 面试题

第一题

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

obj.pro.getPro()

解析

  • 首先,全局变量a的值是10obj对象里面有两个key 分别aproa的值是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}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值