七天速记前端八股文
for in和正常for循环的区别 在遍历数组时,正常的 循环通常比 循环更适合。虽然 循环可以用于遍历数组,但它有一些潜在的问题和限制。 下面是一些使用 循环相对于 循环的优势: 1. 顺序遍历: 循环可以按照数组元素的顺序进行迭代。而 循环在遍历数组时,并不能保证按照特定顺序遍历,因为它遍历的是对象的属性。 2. 不包含原型链上的属性: 循环仅遍历数组自身的索引,不包括原型链上的属性。而 循环会遍历对象的所有可枚举属性,包括原型链上...
Webpack 和 Rollup:您应该知道的一些事情
本文只做 Webpack 和 Rollup 的对比总结,不参入 esbuild、Vite 或其他工具的讨论 Webpack 和 Rollup 都是现在前端领域比较流行的打包工具,它们的相似之处在于可以帮助我们 把多个 JavaScript 文件打包成一个可以在浏览器中加载并在生产中使用的文件。 打包成单个文件的好处是可以减少网络请求、提高网站性能等目的。 这篇文章主要想通过对比的方式讲讲这两种打包工具的差异...
2024年JavaScript常见面试题
基础问题 1、 JavaScript是单线程的吗? 2、 请介绍JavaScript引擎的主要构成以及引擎是如何工作的? 3、 请介绍JavaScript的事件循环并讲解它对异步编程的意义? 4、 请解释下JavaScript里的“提升”概念? 5、 请讲下var、let和const的差异? 6、 JavaScript有哪些数据类型? 7、 什么是回调函数和回调地狱? 8、 请介绍下Promise? 9、 请介绍下async/await...
为什么[ ] == [ ] 为false, [ ] == ![ ] 为true?
这两个表达式涉及到 JS 中类型转换和比较操作符的行为。JS 是一种灵活的动态语言,它有一套自己的类型转换规则,有时会导致一些看似奇怪的结果。在理解这两个表达式的行为时,需要深入了解 JS 的类型转换机制以及比较操作符的工作方式。 首先介绍一下 JS 中的类型转换机制,JS 中的类型转换通常发生在两种情况下: 隐式类型转换 和 显式类型转换 。隐式类型转换是 JS 自动执行的类型转换,通常发生在需要不同类型的值的运算或比较时。而显式类型...
前端中的观察者和发布订阅设计模式的区别和应用
前言 观察者模式(Observer Pattern)和发布订阅模式(Publish Subscribe Pattern)都是常见的行为设计模式,用于实现对象之间的解耦和通信。它们之间的主要区别在于对象之间的关系和通信方式。 观察者模式: 关系 :观察者模式中存在一个被观察者(Subject)和多个观察者(Observer)之间的一对多关系。当被观察者的状态发生变化时,所有观察者都会收到通知并进行相应的更新。 通信方式 :被观察者直接通知...
前端请求如何避免明文传输
要在前端发送请求时做到不明文,有以下几种方法: 1. HTTPS 加密传输: 使用 HTTPS 协议发送请求,所有的数据都会在传输过程中进行加密,从而保护数据不以明文形式传输。这样即使数据被截获,黑客也无法直接获取到数据的内容。 2. 数据加密处理: 在前端对敏感数据进行加密处理,然后再发送请求。可以使用一些加密算法,如 AES、RSA 等,将敏感数据进行加密后再发送到服务器。这样即使数据在传输过程中被截获,也无法直接获取其内容。 3....
图解原型和原型链
什么是原型(prototype)? 我们知道原生的js中并没有类(Class)这个概念, 因此在js中创建对象主要是通过以下两种方式实现: 其中前者适用于创建单个对象,当需要批量创建对象时,我们往往采取后者,即通过构造函数创建对象。 原型(prototype) 是函数的一个特定属性,该属性可看做一个指针,指向一个对象,该对象包含了构造函数的所有共有属性和函数。 简单来说原型相当于一个共享窗口,凡是放在原型里的属性都能共享给子代使用,但子...
一文带你弄懂 前端SEO优化
前言 以前开发独立站,涉及过一些SEO的内容,为了避免后面会遗忘,感觉有必要记录下相关经验,也算是一次总结吧! SEO概念 SEO 是 Search Engine Optimizatio(搜索引擎优化) 的首字母缩写,利用搜索引擎的规则对网站进行内部及外部的调整优化,提高网页或网站在搜索引擎中关键词的自然排名, 以求得获得更多的展现量和吸引免费的点击流量,从而达到互联网营销及品牌建设的目标。 SEO的方式 1\. Title标签 对页面...
一文带你深入理解 JavaScript 中的原型与原型链
先使用构造函数创建一个对象: 在上述例子中,我们使用构造函数 ,通过 创建了一个实例对象 。 原型 上的方法是给实例对象使用的。 每个函数( 只有函数才会有 )都有一个 属性,其指向一个对象,这个对象就是该构造函数创建的 实例对象 的原型(通过 指向,后续会详细讲解)。 指向的通常是一个 空对象,我们可以手动为其添加属性和方法,例如: 构造函数的 属性和 实例对象的原型 的关系为: prototype 构造函数...