前端面试题

这篇博客整理了20个前端面试常问问题,涵盖了环境判断、点击事件延迟、JavaScript作用域、数组操作、class语法、requireJS原理、Ajax缓存处理、事件委托等多个方面,深入探讨了JavaScript的核心概念和技术细节。
摘要由CSDN通过智能技术生成

1 如何判断当前脚本运行在浏览器还是node环境中?

this === window ? 'browers':'node';
通过判断Global对象是否为window,如果不为window,当前脚本没有运行在浏览器中。

2 移动端的点击事件的有延迟,事件是多久,为什么会有?怎么解决这个延时?

移动端点击有300ms的延迟是因为移动端会有双击缩放的这个操作,因此浏览器在click之后要等待300ms,看用户有没有下一次点击,来判断这次操作是不是双击。
有三种办法来解决这个问题

  • 通过meta标签禁用网页的缩放
  • 通过meta标签将网页的viewport设置为ideal viewport。
  • 调用一些js库,不如FastClick
    click延时问题还可能引起点击穿透的问题,就是如果我们在一个元素上注册了touchStart的监听事件,这个事件会将这个元素隐藏掉,我们发现当这个元素隐藏后,触发了这个元素下的一个元素的点击事件,这就是点击穿透。

3 JavaScript中的作用域与变量声明提升?

变量提升的表现是,无论我们在函数中何处位置声明的变量,好像都被提升到了函数的首部,我们可以再变量声明前访问到而不会报错
造成变量声明提升的本质原因是js引擎在代码执行前有一个解析的过程,创建了执行上下文,初始化了一些代码执行时需要用到的对象。当我们访问一个变量时,我们会到当前执行上下文中的作用域链中去查找,而作用域链的首端指向的是当前执行上下文的变量对象,这个变量对象是执行上下文的一个属性,它包含了函数的形参、所有的函数和变量声明,这个对象的实在代码解析的时候创建的。这就是会出现变量声明提升的根本原因。

4 [, , ,]的长度?

尾后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值