前端中老生常谈的面试题

257 阅读2分钟

前端中老生常谈的面试题

这是我参与2022首次更文挑战的第27天,活动详情查看:2022首次更文挑战」。

document.load 和 document.ready 的区别?

两者都是页面加载完成后的两种事件。

ready 是当页面结构加载完成后执行,这里的加载完成不包括图片或媒体文件。

load 是当页面所有资源全部加载完成后执行。

理论上 ready 比 load 先执行。

javascript 中如何检测一个字符串的类型?

console.log(typeof str); // string

console.log(toString.call(str)); // [object String]

描述 == 和 === 的区别?

== 代表相同 先转换类型,再作“值”比较,最后返回值比较结果

=== 代表严格相同 只有在相同类型下,才会比较其值

什么是时间委托,事件冒泡?

事件冒泡: 开始时由最具体的元素接收,然后逐级向上传播到到 DOM 最顶层节点。

事件委托: 也称为事件代理, 在 jQuery 里面称为事件委派。 不是每个子节点单独设置事件监听器,而是事件监听器设置在其父节点上,然后利用冒泡原理影响设置每个子节点。

JS 操作符 new 做了什么?

1 创建一个新对象;

2 修改this指向,将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象

3 执行构造函数中的代码(为这个新对象添加属性)

4 返回新对象。

JS 的作用域和作用域链?

作用域就是某个变量或某段代码可以被使用或访问到的的作用范围,作用域分为全局作用域和函数作用域。

全局作用域: 代码在程序的任何地方都能被访问,window 对象的内置属性都拥有全局作用域。

函数作用域: 在固定的代码片段才能被访问

作用域链:一般情况下,变量取值到 创建 这个变量 的函数的作用域中取值。 但是如果在当前作用域中没有查到值,就会向上级作用域去查,直到查到全局作用域,这么一个查找过程形成的链条就叫做作用域链。

JS 原型和原型链

prototype 就是原型,它是一个对象,我们也称它为原型对象。

原型链: JavaScript是面向对象的,每个实例对象都有一个__proto__属性,该属性指向它的原型对象,这个实例对象的构造函数有一个原型属性prototype,与实例的proto属性指向同一个对象。当一个对象在查找一个属性的时候,自身没有就会根据__proto__向它的原型进行查找,如果都没有,则向它的原型的原型继续查找,直到查到Object.prototype.proto_为null,这样也就形成了原型链。