⑦前端面试题(js部分)

1、原始值和引用值类型及区别(堆和栈)?

可参考:https://www.cnblogs.com/clearyang/p/15735049.html

2、判断数据类型?

1.typeof:直接判断类型。需要注意typeof(null)为Object typeof(undefined)null2.instanceof:用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上;
//例如:
function A (){}
var b = new A()
b instanceof A  --> true
3.Object.prototype.toString.call(): 返回具体类型 加call是为了更改this指向
例如:   
// '[object Object]'  this 指向 Object.prototype,判断类型为 Object。
Object.prototype.toString([])     
// '[object Array]' this 指向 [],判断类型为 Array
Object.prototype.toString.call([])  
4.constructor: 返回对创建此对象的数组函数的引用
[可参考](https://www.cnblogs.com/lieaiwen/p/10219783.html)

3、类数组与数组的区别与转换?

都有下标和长度 类数组没有数组的方法

转换:Array.from()  扩展运算符()   Array.prototype.slice.call()

4、数组的常见api?

find map splice( 删除、插入、替换) filter join concat slice

5、bind call apply 区别?

都是改变this指向
bind 返回一个函数可以延时调用
call 参数一个一个传递
apply 第二个参数以后可以用数组

6、new的原理?

创建一个对象;
将构造函数的this指向该对象;
执行构造函数的方法,使该对象继承构造函数的方法和属性;
返回该对象。

7、this指向?

谁调用指向谁
箭头函数的this指向上一行

8、深拷贝和浅拷贝 ?

浅拷贝拷贝栈
深拷贝拷贝堆

9、闭包及其作用 (个人理解)?

闭包函数返回函数
作用 访问函数内部的变量 连续调用不受影响

10、原型和原型链(很重要又难懂)?

可参照:https://blog.csdn.net/xiaoermingn/article/details/80745117

11、prototype与__proto__的关系与区别?

①所有引用类型都有一个__proto__(隐式原型)属性,属性值是一个普通的对象
②所有函数都有一个prototype(原型)属性,属性值是一个普通的对象
③所有引用类型的__proto__属性指向它构造函数的prototype

12、继承的实现方式及比较?

可参照: https://www.cnblogs.com/bonly-ge/p/12089014.html
这篇可能更好点:http://louiszhai.github.io/2015/12/15/prototypeChain/

13、防抖和节流

防抖点击后触发
节流时间段内触发

14、作用域和作用域链、执行期上下文

作用域和作用域链、执行期上下文

15、DOM常见的操作方式? BOM是什么?

https://blog.csdn.net/ZCZC946/article/details/80789934

16、Array.sort()方法与实现机制

https://blog.csdn.net/haotian1997/article/details/114835702

17、Ajax的请求过程

https://blog.csdn.net/qq_45494634/article/details/116640968

18、JS的垃圾回收机制

闭包中的内存泄漏只是低版本浏览器的垃圾回收机制有问题!!!
https://blog.csdn.net/weixin_53186633/article/details/121089016

19、JS中的String、Array和Math方法

https://www.cnblogs.com/lihuijuan/p/8490578.html

20、addEventListener和onClick()的区别

addEventListener和onClick()的区别

21、new和Object.create的区别

new Object()继承内置对象Object,而Object.create()则是继承指定对象;
可以通过Object.create(null) 创建一个干净的对象,也就是没有原型,而 new Object()创建的对象是 Object的实例,原型永远指向Object.prototype
参考文章

22、DOM的location对象

Location 对象实际上是 JavaScript 对象,而不是 HTML DOM 对象。
Location 对象是由 JavaScript runtime engine 自动创建的,包含有关当前 URL 的信息。
参考文章

23、浏览器输入URL渲染的整个流程

参考文章

24、跨域

25、浏览器回流和重绘

回流改变dom树
重绘只改变颜色样式等
参考文章

26、argument

参考文章

27、EventLoop事件循环

就是执行机制(可以简单理解为微任务,宏任务)
参考文章

28、微任务,宏任务

先宏任务后微任务最后执行定时器

29、BOM属性对象方法

1.window对象
2.location对象
3.history对象
参考文章

30、 "== "和 "=== "区别

"== “表示相等,”=== "表示严格相等。运算符会在进行相等比较之前先进行必要值的类型转换;而“===”运算符不会执行类型转换,因此如果两个值类型不同,那么比较时,直接返回false。
参考文章

31、map,reduce,for,forEach

forEach不能跳出循环可以用抛出错误的方法强行终止或者break / continue
参考文章(map,for,forEach)
参考文章

32、setTimeout用做倒计时为何会产生误差

setTimeout是一个异步的宏任务,当执行setTimeout时是将回调函数在指定的时间之后放入到宏任务队列。但如果此时主线程有很多同步代码在等待执行,或者微任务队列以及当前宏任务队列之前还有很多任务在排队等待执行,那么要等他们执行完成之后setTimeout的回调函数才会被执行,因此并不能保证在setTimeout中指定的时间立刻执行回调函数

33、函数柯里化及其通用封装

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值