
JS
文章平均质量分 80
JS
庸人°
喂,程序猿,猫主子还在等你回家铲屎
展开
-
关于内存泄漏
内存泄漏什么是内存泄漏内存泄漏是指无用的数据还占用内存,使得该内存无法释放和归还,内存泄漏情况严重时过多内存被占用会导致整个系统卡顿,甚至崩溃。引擎中有垃圾回收机制,主要针对一些程序中不再使用的对象,对其清理回收并释放响应内存空间。引擎针对垃圾回收做了各种优化,为了尽可能的确保垃圾能够被回收,但在开发过程中不当的操作会使的引擎并不能确认当前对象是否不会再被使用,无法进行回收,造成内存泄漏的情况。相关概念内存管理像c语言这样的底层语言一般都有底层的内存管理接口,比如malloc()和free()原创 2022-04-14 16:38:36 · 447 阅读 · 0 评论 -
手写Promise系列之——all
面试过程中少不了手写题,而promise相关的手写题也是很经常被问到,这里就来整理一下promise手写系列。整个系列预计有以下几个函数的手写文章,今天先来实现all函数allanyraceallSettledresolve+rejectpromise手写实现Promise.all作用Promise.all()方法用于将多个Promise实例包装成一个新的Promise实例。const a = Promise.all([p1, p2, p3])最终a的状态由p1,p2,p3决定。原创 2022-02-16 10:16:37 · 648 阅读 · 0 评论 -
Object 常用API
写这篇文章主要是用来整理一下常用的Object API,加深记忆以及方便后期自己查阅构造函数Object()构造函数Object构造函数将给定的值包装为一个新对象如果给定的值是null或undefined,它会创建并返回一个空对象 否则,将返回一个和给定的值相对应的类型的对象 如果给定值是一个已经存在的对象,则会返回这个已经存在的值(相同地址)静态方法Object.assign()通过复制一个或多个对象来创建一个新的对象。Object.assign()方法用于将所有可枚举属原创 2022-02-10 17:55:53 · 916 阅读 · 0 评论 -
JavaScript之数组去重
数组去重也算是前端面试的一道经典题了,这里我们来总结一下具体有哪些方法,各自的逻辑:1. 双层for循环function distinct(arr){ let len = arr.length for(let i = 0; i < len; i++){ for(let j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ arr.splice(j, 1)原创 2022-01-20 15:17:33 · 828 阅读 · 0 评论 -
ES6之Proxy
简介Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程语言进行编程。Proxy可以理解为,在目标对象之前架设一层"拦截",外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy这个词的原意是代理,用在这里表示由它来"代理"某些操作,可以译为"代理器"。简单来说Proxy对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。va原创 2022-01-05 18:04:35 · 460 阅读 · 0 评论 -
Set、Map、WeakSet与WeakMap的区别
前言ES6中有了Set和Map两种结构,那么Set和Map分别是什么样的结构,有什么区别呢。简单介绍一下:Set是一种叫做集合的数据结构,Map是一种叫做字典的数据结构什么是集合?什么又是字典集合是由一堆无序的、相关联的,且不重复的内存结构【数学中成为元素】组成的组合字典是一些元素的集合。共同点:集合、字典都可以存储不重复的值不同点:集合是以[值,值]的形式存储元素,字典是以[键,值]的形式存储Set、WeakSetSet基本用法ES6提供了新的数据结构Set。它类似原创 2022-01-03 21:04:49 · 508 阅读 · 0 评论 -
数组扁平化【JS】
前言今天整理一道面试中的经典高频题:数组扁平化。先说一下什么是数组扁平化,简单来说就是把多为数组的元素按顺序放置在一维数组中,使其扁平。比如说[1, 2, 3, 4]这是一个拥有3个元素的数组,是一个一维数组(不存在数组嵌套)。[[1, 2, 3], [4, 5], [6, 7]]从整体上看是一个数组,但是其中的元素又是数组,即数组中嵌套数组。可以有二维,三维,n维数组。而数组扁平化就是把多为数组转化成一维数组,比如上文中的二维数组通过扁平化就变成[1, 2, 3, 4, 5, 6, 7]那么实现数组扁原创 2021-12-31 17:09:57 · 551 阅读 · 0 评论 -
var与let、const之间的区别
说到JavaScript中声明变量的几种方法也就是var、let、const了,let和const是es6中新增的命令。那么它们之间有什么区别呢?我们先整体说一下三者的区别,在详细介绍,var、let、const的区别主要从以下几点分析:作为全局变量时的不同变量提升暂时性死区块级作用域重复声明修改声明的变量作为全局变量时在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量的属性但是ES6中用let声明的变量可以在全局访问到,但是并没有在顶层变量的原创 2021-12-30 20:51:00 · 553 阅读 · 0 评论 -
防抖节流【JS】
概念在项目开发中避免不了使用防抖节流来限制频繁触发函数。既然要了解这个东西,首先要们要知道什么是防抖什么是节流防抖(debounce)在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。节流(throttle)规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。总结来说,防抖和节流都是防止同一时间内多次触发某个操作,但是其作用和原理又不尽相同。防抖相当于每次触发重新计时,只有最后一次操作有效,举个不起恰当的例子,比如说我们刷新页面时加载页面资源需要原创 2021-12-20 19:41:16 · 419 阅读 · 0 评论 -
Js面试题之——箭头函数与普通函数的区别
在项目开发中,包括面试的时候经常会遇到或问到箭头函数和普通函数有什么区别当我们猛然去想,好像一直以来只记得箭头函数中没有this,当我们在箭头函数中使用this会获取该函数上层的this值。那么除此之外,就没有其他区别了吗,当然不是。这里我们就来总结总结。mdn中对箭头函数特点的描述是这样的:箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this、arguments、super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且不能作构造函数。由此可以看出箭头函数和普通原创 2021-10-27 17:42:38 · 622 阅读 · 0 评论 -
js面试题之——深浅拷贝
一直以来倒是没有仔细的思考过深浅拷贝的问题,最近有听到小伙伴在讨论,全面了解了一下,深拷贝并没有那么简单。现在让我们来一起探讨深浅拷贝相关的内容吧。基本数据类型、引用数据类型为什么会出现深浅拷贝的问题,主要因为在于js中所有的数据类型分为基本数据类型和引用数据类型两大类。那么基本数据类型有哪些呢:Number、String、Boolean、Undefined、Null、Symbol、BigInt引用数据类型,就是Object了,但是js封装了几个继承了Object原型属性的一些对象,Array、Fu原创 2021-10-26 20:59:16 · 1229 阅读 · 0 评论 -
JavaScript——反转链表
题目描述输入一个长度为n链表,反转链表后,输出新链表的表头。数据范围: n≤1000要求:空间复杂度 O(1) ,时间复杂度 O(n)。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:示例1:输入:{1,2,3}返回值:{3,2,1}示例2:输入:{}返回值:{}说明:空链表则输出空 递归实现先看代码:function ReverseList(pHead){ if(pHead === nul原创 2021-10-23 10:16:57 · 2086 阅读 · 0 评论 -
apply、call与bind【JS】
1. apply1.1 apply 使用apply()方法调用一个具有给定this值的函数,以及以一个数组(或类数组对象)的形式提供的参数注意:call()方法的作用和 apply() 方法类似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组。const numbers = [5, 6, 2, 3, 7];const max = Math.max.apply(null, numbers);console.log(max);// expec.原创 2021-09-28 16:42:10 · 129 阅读 · 0 评论 -
this指向问题【JS】
call()与apply()原创 2021-09-28 16:29:06 · 221 阅读 · 0 评论 -
事件循环机制【JS】
事件循环机制原创 2021-09-28 16:00:42 · 324 阅读 · 0 评论 -
JavaScript 对象,原型,原型链,this关键字,闭包
对象概念首先是javaScript的对象概念,与java不同,javaScript的对象是一种复合值:将很多值(原始值或者其他对象)聚合在一起,可通过名字去访问这些值。并且可以将对象看成是属性的无序集合,每一个属性都是一个名/值对。原型继承JavaScript中的对象除了可以保持自有的属性,JavaScript对象还可以从原型对象中继承属性。对象的方法通常是继承的属性。原型...原创 2019-08-16 16:24:59 · 194 阅读 · 0 评论