全部文章

1299 篇文章

八股文02-13
阅读

promise 是否可以取消

在原生的 JavaScript Promise 中,它没有内建的取消机制。一旦一个 Promise 被创建并开始执行,就无法直接取消它。 通常情况下,Promise 一旦被创建,就会一直执行直到成功(resolve)或失败(reject)。但是,你可以通过一些手动的方式来模拟取消 Promise 的效果。下面是几种常见的方法: 1. 忽略 Promise 的结果:当你不关心 Promise 的结果时,你可以选择忽略它。这意味着你不会处理...

#面试
八股文02-13
阅读

react-router 里的 <Link>标签和<a>标签有什么区别

从最终渲染的 DOM 来看,这两者都是链接,都是 标签,区别是: 是 react router 里实现路由跳转的链接,一般配合 使用,react router 接管了其默认的链接跳转行为,区别于传统的页面跳转, 的“跳转”行为只会触发相匹配的 对应的页面内容更新,而不会刷新整个页面。 而 标签就是普通的超链接了,用于从当前页面跳转到 href 指向的另一个页面(非锚点情况) 源码层面 先看Link点击事件handleClick部分源码...

#面试
八股文02-13
阅读

什么是伪数组、什么是类数组

关键词 :伪数组、类数组 伪数组(Array like)和类数组(Array like Object)都是描述一种类似数组的对象结构,它们在外观和行为上类似于数组,但实际上不是真正的数组。 伪数组(Array like): 伪数组是指具有类似数组的结构,但不具备数组的方法和属性的对象。 伪数组对象通常拥有一个 length 属性,用于表示其元素的个数。 伪数组对象可以通过索引访问元素,类似于数组的下标访问。 伪数组对象不具备数组的方法,...

#面试
八股文02-13
阅读

函数柯里化了解多少

关键词 :函数柯里化、柯里化应用场景、柯里化优势 函数柯里化是什么? 函数柯里化(Currying)是一种在函数式编程中使用的技术,其主要目的是将一个接受多个参数的函数转换成一系列使用一个参数的函数。 这样做的好处是允许你创建一些部分应用的函数,预先固定一些参数,使得代码更简洁,便于复用和组合。 以下是一个简单的柯里化函数的例子: 在这个例子中,我们创建了一个 函数,该函数接受一个普通的多参数函数(如 )作为输入,并返回一个新的柯里化函...

#面试
八股文02-13
阅读

哪些原因会导致js里this指向混乱

关键词 :js 指向 JavaScript 中 this 指向混乱的原因主要有以下几个: 1. 函数调用方式不同:JavaScript 中函数的调用方式决定了 this 的指向。常见的函数调用方式有函数调用、方法调用、构造函数调用和箭头函数调用。不同的调用方式会导致 this 指向不同的对象,容易引发混乱。 2. 丢失绑定:当函数作为一个独立的变量传递时,或者作为回调函数传递给其他函数时,函数内部的 this 可能会丢失绑定。这意味着函...

#面试
八股文02-13
阅读

常见的前端内存泄露场景有哪些

大多数情况下,垃圾回收器会帮我们及时释放内存,一般不会发生内存泄漏。但是有些场景是内存泄漏的高发区,我们在使用的时候一定要注意: 我们在开发的时候经常会使用 在控制台打印信息,但这也会带来一个问题:被 使用的对象是不能被垃圾回收的,这就可能会导致内存泄漏。因此在生产环境中不建议使用 的理由就又可以加上一条避免内存泄漏了。 被全局变量、全局函数引用的对象,在Vue组件销毁时未清除,可能会导致内存泄漏 定时器未及时在Vue组件销毁时清除,可...

#面试
八股文02-13
阅读

手写 JSON.stringify 和 手写 JSON.parse 实现

关键词 :手写 JSON.stringify、手写 JSON.parse 手写 是一个将 JavaScript 对象或值转换为 JSON 字符串的函数。下面是一个简化的实现,主要考虑以下几种类型:字符串、数字、布尔值、对象和数组。 请注意,这个实现有很多限制,适用于简单场景。它没有处理循环引用、函数、 类型等复杂情况。实际项目中,你还是应该使用内置的 函数。 手写 是一个将 JSON 字符串转换为 JavaScript 对象或值的函数。...

#面试
八股文02-13
阅读

类数组转换成数组的方法有哪些

关键词 :类数组对象转换为真正的数组 有几种常见的方法可以将类数组对象转换为真正的数组: 1. Array.from():使用 Array.from() 方法可以将可迭代对象或类数组对象转换为数组。 2. Array.prototype.slice.call():通过调用 Array.prototype.slice() 方法,并将类数组对象作为参数传入,可以将其转换为数组。 3. Spread Operator(展开运算符):使用展开运...

#面试
八股文02-12
阅读

[ES6]模块与[CommonJS]模块的差异有哪些

差异主要有如下几点: CommonJS 输出是值的拷贝,即原来模块中的值改变不会影响已经加载的该值,ES6静态分析,动态引用,输出的是值的引用,值改变,引用也改变,即原来模块中的值改变则该加载的值也改变。 CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。 CommonJS 加载的是整个模块,即将所有的接口全部加载进来,ES6 可以单独加载其中的某个接口(方法), CommonJS this 指向当前模块,ES6 thi...

#面试