全部文章

共 1306 篇文章

八股文02-14
阅读

escape、encodeURI、encodeURIComponent 区别

关键词 :js URL 编码解码 在 JavaScript 中, 、 和 都是用于编码 URL 或字符串的函数,但它们有一些区别: 1. 函数用于编码字符串中的特殊字符,使其能够安全地传输。它对字符进行编码,包括非 ASCII 字符和特殊字符。但需要注意的是, 不会编码 URL 中的保留字符(例如 ),它只会编码其他字符。 2. 函数用于对整个 URL 进行编码,用于将 URL 中的特殊字符转换为可传输的形式。它不会编码 URL 中的保...

#面试
八股文02-14
阅读

Object.defineProperty 是否可以监听拦截数组变化

关键词 :Object.defineProperty 监听数组变化 1. 基本原理与部分可行性 可以用于监听和拦截数组的某些变化,但不是原生地对所有数组操作都能很好地监听。 数组在 JavaScript 中是特殊的对象,其索引可以看作是对象属性。理论上,我们可以使用 为数组的每个索引(属性)定义属性描述符,以此来尝试监听数组元素的读取和设置操作。 例如,对于一个简单的数组元素设置操作,可以这样定义: 当通过 读取或设置元素时,相应的 和...

#面试
八股文02-14
阅读

requestAnimationFrame 了解多少

是一种优化动画性能的方法,它会在浏览器重绘之前执行指定的回调函数。相比于传统的 或 方法, 会在浏览器的下一次重绘之前执行回调函数,能够更好地与浏览器的渲染机制结合,减少页面的卡顿和闪烁。 的使用方法如下: 在上面的代码中, 方法返回一个唯一的标识符,可以用来取消动画,如下所示: 需要注意的是, 并不一定每秒都会执行 60 次,它会根据浏览器的刷新频率来自动调整执行次数,保证动画的流畅性。同时,由于 是在浏览器的主线程中执行,如果动画计...

#面试
八股文02-14
阅读

为什么函数的 arguments 参数是类数组而不是数组

关键词 :arguments 参数、arguments 参数遍历 在 JavaScript 中,函数的 参数被设计为类数组对象,而不是真正的数组。这是因为 对象包含了函数调用时传入的所有参数,包括未命名的参数。它提供了一种方便的方式来访问和操作这些参数。 要遍历类数组对象,可以使用以下方法: 1. 使用 for 循环和索引:通过使用普通的 for 循环和索引来遍历类数组对象。 2. 使用 for...of 循环: 是特殊的类数组, 因为...

#面试
八股文02-14
阅读

如何冻结一个 JS 对象

关键词 :Object.freeze、Object.freeze作用、深度冻结对象 冻结对象 要冻结一个 JavaScript 对象,以防止别人更改它,可以使用 方法。 方法会递归地冻结一个对象的所有属性,使其变为只读的,并防止更改、删除或添加新属性。以下是使用 方法冻结对象的示例: 在上述示例中,通过调用 方法,将 对象冻结,使其变为只读。此后,无论是更改、删除还是添加属性,都不会对对象产生任何影响。最后,通过 输出对象,可以看到对象...

#面试
八股文02-14
阅读

斐波拉契数列是什么,用 JS 实现,用尾调优化斐波拉契数列

关键词 :斐波拉契数列、尾调优化 斐波那契数列是指:0、1、1、2、3、5、8、13、21、34、……,在数学上,斐波那契数列以如下被以递归的方法定义: F(0) = 0, F(1) = 1 F(n) = F(n 1) + F(n 2) (n 1) 用 JS 实现斐波那契数列可以如下: 这个函数用递归的方式实现了斐波那契数列的求解。但是递归会导致函数栈的不断扩张,当 n 很大的时候会导致栈溢出。所以为了避免这种情况,可以使用尾调用优化。...

#面试
八股文02-14
阅读

普通函数动态参数 和 箭头函数的动态参数有什么区别

关键词 :JS函数动态参数 普通函数和箭头函数在处理动态参数方面有以下区别: 1. 普通函数的动态参数: 在普通函数中,可以使用 对象来访问传递给函数的所有参数,无论是否定义了具名参数。 是一个类数组对象,可以通过索引访问每个参数的值。 普通函数可以使用剩余参数语法(Rest parameters)来声明动态参数,通过三个点( )和一个参数名表示。剩余参数会被收集成一个真正的数组,可以直接使用数组的方法和属性对参数进行操作。 示例: 2...

#面试
八股文02-14
阅读

模拟new操作

关键词 :模拟 new 可以使用以下代码来模拟 操作: 使用示例: 在上述代码中, 函数模拟了 操作的过程: 1. 首先,通过 创建了一个新对象 ,并将构造函数的原型对象赋值给该新对象的原型。 2. 然后,使用 方法调用构造函数,并传入新对象 作为 值,以及其他参数。 3. 最后,根据构造函数的返回值判断,如果返回的是一个非空对象,则返回该对象;否则,返回新创建的对象 。 这样,我们就可以使用 函数来模拟 操作了。

#面试
八股文02-14
阅读

箭头函数解决了什么问题

关键词 :箭头函数、箭头函数特点 箭头函数是ES6中引入的一种新的函数语法,它主要解决了以下几个问题: 1. 简化函数表达式 :箭头函数提供了一种更简洁的函数定义方式,可以用更短的语法来定义函数,减少了冗余的代码。例如,使用箭头函数可以将一个函数表达式 简化为 。 2. 简化this的指向 :在传统的函数定义中,函数内部的 指向的是调用该函数的对象。而在箭头函数中, 的指向是在定义函数时确定的,指向的是箭头函数所在的上下文。这解决了传统...

#面试