10 个常问的 JS 面试题

本文详细解析了JavaScript中的常见面试题,包括this关键字的特殊之处,如何理解和解决this指向问题,闭包的概念及应用场景,变量提升的原理,JavaScript如何处理同步和异步,以及事件委托、高阶函数和原型继承的基本概念。通过这些深入理解,有助于提升JS编程能力。
摘要由CSDN通过智能技术生成

1.如何理解 JS 中的this关键字?

JS 初学者总是对 this 关键字感到困惑,因为与其他现代编程语言相比,JS 中的这this关键字有点棘手。 “this” 一般是表示当前所在的对象,但是事情并没有像它应该的那样发生。JS中的this关键字由函数的调用者决定,谁调用就this就指向哪个。如果找不到调用者,this将指向windows对象。

来几个粟子

第一个例子很简单。 调用 test对象中的 func(),因此func() 中的’this’指向的是 test 对象,所以打印的 prop 是 test 中的 prop,即 42。

var test = {
prop: 42,
func: function(){
return this.prop;
},
};
console.log (test.func()); // 42
如果我们直接调用getFullname函数,第二个例子将打印出’David Jones’,因为此时 this 找不到调用者,所以默认就为 window 对象,打印的 fullname 即是全局的。
var fullname = ‘David Jones’ var obj ={ fullname: ‘Colin Brown’, prop:{ fullname:’Aurelio Deftch’, getFullname: function(){ return this.fullname; } } } var test = obj.prop.getFullname console.log(test()) // David Jones obj.prop.getFullname() // ‘Aurelio Deftch’

  1. 由于 this 关键字很混乱,如何解决这个问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值