js
文章平均质量分 75
huohuoit
这个作者很懒,什么都没留下…
展开
-
(六)不只是 huohuo 的 JS 面试题-续
JS 的内容实在太多太多了,上一篇也写了挺久了,两万多字对于一篇博客来说有些太长了,所以开了这篇续篇。但是目前主要精力不会着手于这篇文章,因为实在太忙了,最近还有一些面试需要准备,框架和算法都还没好好复习到。所以这篇暂时先列出一些主题内容,过段时间再来好好整理啦! ...原创 2021-08-08 16:25:35 · 229 阅读 · 0 评论 -
(五)不只是 huohuo 的 JS 面试题
写过最多的是 JS 相关的文章,做过最完整的是 JS 的思维导图,敲过最多的依然是 JS 代码,我觉得自己的 JS 还算可以了。写到这里的时候,我已经离职一周,参加了几次面试,大多数问题都能按自己的理解回答上来,同时,也让我意识到,那只是我以为的可以,只是没有遇到真正厉害的面试官罢了 ~写 JS 面试题之前,我纠结了好多次,我已经看过很多优秀的相关文章了,也写过很多各种各样的笔记了,还有没有必要再重复写。面完几次之后,有过正确解答,也有一知半解。有些问题让我意识到,这不是一次重复,而是一次重新认识,..原创 2021-07-26 15:46:02 · 714 阅读 · 0 评论 -
JS算法--递归算法
循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while语句。 [循环则技能对应集合,列表,数组等,也能对执行代码进行操作。] 迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for语句。 [迭代只能对应集合,列表,数组等。不能对执行代码进行迭代。] 遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。 [...原创 2020-07-26 13:58:33 · 1450 阅读 · 0 评论 -
Javascript数据结构与算法--读后总结(2)数组
1、访问元素要访问数组里特定位置的元素,可以用中括号传递数值位置,得到想知道的值或者赋新的值。 假如我们想输出数组arr里的所有元素,可以通过循环遍历数组,打印元素,如下所示: for (var i = 0; i < arr.length; i++) { console.log(arr[i]); }例子:求斐波那契数列的前20个数字。已知斐波那契数列中第一个数字是1, 第二个是2,从第三项开始,每一项都等于前两项之和:斐波那契数列为:1...原创 2020-07-26 01:07:48 · 225 阅读 · 0 评论 -
Javascript数据结构与算法--读后总结(1)ES6
一、ES6部分1、函数的参数默认值 function sum(x = 1, y = 2, z = 3) { return x + y + z }; console.log(sum(4, 5)); //输出12由于我们没有传入参数z,它的值默认为3。因此,4 + 5 + 3 ==12。 在ES6之前,上面的函数我们只能写成这样: function sum(x, y, z) { if (x === undefined)原创 2020-07-25 23:19:13 · 152 阅读 · 0 评论 -
JS-数组去重的13种方法
一、数组去重首先全局定义一个数组,我们来对各个方法对比一下var arr1 = [11, 11, 1, 1, 2, 2, 'huo', 'huo'];1、双重for循环+新数组思想:建立一个新数组,并放入原数组的第一个元素。将原数组元素依次与新数组元素比较,元素不同就放入新数组。最后返回新数组,达到去重效果。 function darray2(arr) { let newArr = [arr[0]]; for (let i = 0; i <原创 2020-07-24 16:23:04 · 265 阅读 · 0 评论 -
前端面试----深信服面试题全概
这里结合了CSDN多位博主的深信服面试题,为了锻炼自己的答题能力和技术点理解,这里对博主的各个题目进行了自己的解答(最好用自己的理解自己的话解答),同时部分解答借鉴了博主的回答。记在word笔记的时候没有记录博主地址,但还是感谢分享,一起努力加油啊!一、HTML(1)常见的HTML块级元素和行内元素(2)HTML5的新标签有什么了解,详述一下表单的新标签(3)Image标签中alt和title有什么区别二、CSS(1)CSS盒子模型(IE盒子模型,标准盒子模型)(2)CSS元素居原创 2020-07-16 14:27:15 · 4471 阅读 · 5 评论 -
字节跳动前端面试总结(持续更新)
一、HTML二、CSS三、JS1、setTimeOut()和setInterval()的区别都是用来处理延时和定时任务的函数setTimeOut()只延迟执行一次,且是在指定的毫秒数之后再调用函数。setInterval()是一段时间执行一次,可以执行多次,是在每隔指定的毫秒数循环调用函数,直到clearInterval把它清除掉。2、原型链继承让子类的原型对象(prototype)指向父类的实例,当子类实例找不到对应的属性和方法时,就会往它的原型对象,也就是父类实例上找,从..原创 2020-06-24 20:19:58 · 2477 阅读 · 0 评论 -
W3C标准规范总结
一、标准规范1、 需要声明文档类型(DOCTYPE)2、需要定义语言编码3、JavaScript定义Js必须要用<script language="javascript" type="text/javascript">来开头定义,而不是原来的<script language=javascript>或干脆直接<script>,并且需要加个注释符<!-- -->,以保证不在不支持js的浏览器上直接显示出代码来。外部JS,和网页内JS不能写在一块。原创 2020-06-21 23:42:32 · 207 阅读 · 0 评论 -
从0手写Promise(一步步深刻理解)
一、基础知识准备1、函数对象与实例对象函数对象:将函数作为对象使用时,简称为函数对象实例对象:new函数产生的对象,简称为对象function Fn(){ //Fn函数}const fn = new Fn() //Fn是构造函数 fn是实例对象(对象)console.log(Fn.prototype) //Fn是函数对象//记忆:Fn放在,括号左边是函数,点的左边是对象Fn.bind({}) //只有函数对象才有 call()、apply()、bi原创 2020-06-14 01:52:51 · 347 阅读 · 0 评论 -
V8垃圾回收机制的理解
一、为什么要有垃圾回收在C语言和C++语言中,我们如果想要开辟一块堆内存的话,需要先计算需要内存的大小,然后自己通过malloc函数去手动分配,在用完之后,还要时刻记得用free函数去清理释放,否则这块内存就会被永久占用,造成内存泄露。但是我们在写JavaScript的时候,却没有这个过程,因为人家已经替我们封装好了,V8引擎会根据你当前定义对象的大小去自动申请分配内存。不需要手动管理内存,所以自然要有垃圾回收,只分配不回收,内存容易被占满。垃圾回收优点:不需要我们去管理内存,把更多的精原创 2020-06-13 01:29:20 · 233 阅读 · 0 评论 -
ES6-promise(阮一峰ES6读后总结)
一、Promise的含义Promise是异步编程的一种解决方案,语法上来说是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理,使得控制异步操作更加容易 。Promise对象的两个特点:1、对象的状态不受外界影响Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败) 只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态2、.原创 2020-06-12 18:34:31 · 1364 阅读 · 2 评论 -
JS-五种数组扁平化方法总结
对于[1, [1,2], [1,2,3]]这样多层嵌套的数组,我们如何将其扁平化为[1, 1, 2, 1, 2, 3]这样的一维数组呢:1、ES6的flat()const arr = [1, [1,2], [1,2,3]]arr.flat(Infinity) // [1, 1, 2, 1, 2, 3]2、序列化后正则const arr = [1, [1,2], [1,2,3]]const str = `[${JSON.stringify(arr).replace(/(\[|\.原创 2020-06-12 14:12:55 · 1236 阅读 · 0 评论 -
JS-详细的防抖和节流
1、防抖和节流 防抖 节流 概念 短时间频繁触发同一事件,只会执行一次函数 函数每隔一段时间只会执行一次 实现原理 设置一个计时器,约定在XX毫秒后再触发事件处理,每次触发事件都会重新设置计时器,直到XX毫秒内无第二次操作 设置一个计时器,约定XX毫秒后执行事件,如果时间到了,就执行函数,并重置计时器 应用场景 搜索框/滚动条的监听事件处理等。如果不做防抖,每输入一个字/滚动屏幕,都会触发事件处理,造成性能浪费 窗口调整,页面滚动,抢购疯狂..原创 2020-06-11 23:38:59 · 657 阅读 · 0 评论 -
JS-六种继承方式(ES5+ES6)
前五种为ES5继承实现,最后一种ES6一、原型链继承原理:让子类的原型对象指向父类实例,当子类实例找不到对应的属性和方法时,就会往它的原型对象,也就是父类实例上找,从而实现对父类的属性和方法的继承// 父类function Parent() { this.name = '火火'}// 父类的原型方法Parent.prototype.getName = function() { return this.name}// 子类function Child() {}原创 2020-06-11 23:19:35 · 1556 阅读 · 0 评论 -
JS-ES6-let和const、解构赋值、箭头函数、内置对象扩展
一、ES6简介ES 的全称是 ECMAScript , 它是由 ECMA 国际标准化组织,制定的一项脚本语言的标准化规范。ES6 实际上是一个泛指,泛指 ES2015 及后续的版本。为什么使用 ES6 ?1.变量提升特性增加了程序运行时的不可预测性 2.语法过于松散,实现相同的功能,不同的人可能会写出不同的代码二、ES6新增语法1、letES6中新增的用于声明变量的关键字。 (1)let声明的变量只在所处于的块级有效 if (true) { let a.原创 2020-06-10 20:14:50 · 430 阅读 · 0 评论 -
JS-正则表达式笔记二次总结
一、正则表达式概述1、什么是正则表达式正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也 是对象。 通常被用来检索、替换那些符合某个模式(规则)的文本。例如:(1)验证表单:用户名表单只能输入英文字 母、数字或者下划线, 昵称输入框中可以输入中文(匹配)。(2)过滤掉页面内容中的一 些敏感词(替换)(3)从字符串中获取我们想要的特定部分(提取)其他语言也会使用正则表达式,这里我主要是利用 JavaScr原创 2020-06-10 14:46:37 · 241 阅读 · 0 评论 -
JS-函数进阶笔记二次总结
一、函数的定义和调用 1、函数的定义方式 (1)函数声明方式 function 关键字 (命名函数) (2)函数表达式 (匿名函数) (3)new Function() function fn(){}var fn = function(){}var fn = new Function('参数1','参数2'..., '函数体')var f = new Function('a', 'b', 'console.log(a + b)'); f(1, 2); Functio原创 2020-06-10 13:49:12 · 307 阅读 · 0 评论 -
JS-数组、字符串、对象方法总结
一、数组方法 迭代(遍历)方法:forEach()、map()、filter()、some()、every(); 1、forEach()array.forEach(function(currentValue, index, arr)) currentValue:数组当前项的值 index:数组当前项的索引 arr:数组对象本身2、filter()array.filter(function(currentValue, index, arr)) filter(原创 2020-06-09 23:47:41 · 237 阅读 · 0 评论 -
JS-构造函数和原型(constructor、__proto__、prototype)
一、构造函数和原型 1、概述在 ES6之前 ,对象不是基于类创建的,而是用一种称为构建函数的特殊函数来定义对象和它们的特征。 创建对象可以通过以下三种方式: 1. 对象字面量 2. new Object() 3. 自定义构造函数2、构造函数构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 一起使用。我 们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。 (1)在 JS 中,使用构造函数时要注意以下两点.原创 2020-06-09 23:26:47 · 902 阅读 · 0 评论 -
JS-面向对象笔记二次总结
一、面向对象编程介绍1、面向过程编程 POP(Process-oriented programming)面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依 次调用就可以了。 举个栗子:将大象装进冰箱,面向过程做法。 1.打开冰箱门2.大象装进去3.关上冰箱门面向过程,就是按照我们分析好了的步骤,按照步骤解决问题。2、面向对象编程 OOP (Object Oriented Programming) 面向对象是把事务分解成为原创 2020-06-09 23:00:03 · 290 阅读 · 0 评论 -
原生JS制作轮播图(详细步骤分析)
PC端轮播图1、功能需求1. 鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮。 2. 点击右侧按钮一次,图片往左播放一张,以此类推, 左侧按钮同理。 3. 图片播放的同时,下面小圆圈模块跟随一起变化。 4. 点击小圆圈,可以播放相应图片。 5. 鼠标不经过轮播图, 轮播图也会自动播放图片。 6. 鼠标经过,轮播图模块, 自动播放停止。2、案例分析第1,2步① 因为js较多,我们单独新建js文件夹,再新建js文件, 引入页面中。 ② 此时需要添加 load.原创 2020-06-10 12:07:57 · 1617 阅读 · 0 评论 -
JS-WebAPI笔记之网页特效篇
一、PC端网页特效1、元素偏移量 offset 系列 (1)offset 概述 offset 翻译过来就是偏移量, 我们使用 offset 系列相关属性可以动态的得到该元素的位置(偏移)、大小等。 获得元素距离带有定位父元素的位置 获得元素自身的大小(宽度高度) 注意: 返回的数值都不带单位 offset 系列常用属性:(2)offset 与 style 区别 offset style offset 可以得到任意样式表中的样.原创 2020-06-09 20:42:29 · 246 阅读 · 0 评论 -
JS-WebAPI笔记二次总结(含兼容性处理)
一、API 和 Web API 1、API API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序 与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 简单理解: API 是给程序员提供的一种工具,以便能更轻松的实现想要完成的功能。 2、Web API Web API 是浏览器提供的一套操作浏览器功能和页面元素的 API ( BOM 和 DOM )。 现阶段我原创 2020-06-09 14:53:14 · 470 阅读 · 0 评论 -
JS-基础笔记二次总结(B站跟过黑马的同学看过来)
这里都是基于我在B站跟过的黑马教学视频上的PPT进行二次总结的笔记,结合了自己平时的加注和记录。欢迎跟过黑马视频的小伙伴们一起来复习Pink老师授予我们的快乐知识,在此也非常感谢黑马机构,让我有系统的资料对前端技术有了整体性的学习。这里也非常适合新手对JS有一个非常系统的了解与整体认识。那么,开始吧。一、初识JavaScript1、JavaScript的作用表单动态校验(密码强度检测) ( JS 产生最初的目的 ) 网页特效 服务端开发(Node.js) 桌面程序(Electron)原创 2020-06-08 01:54:00 · 697 阅读 · 0 评论 -
深刻理解vue 组件中的 data 为什么必须是函数
关于这个问题,需要意识到:这是因为js的特性,跟vue本身设计无关。js本身的面向对象编程是基于原型链和构造函数,我们会注意到,原型链上添加一般都是一个函数方法而不会去添加一个对象。vue实例中的data是一个对象,作为绑定的数据。而这里组件中的data()必须是一个函数,其实应该叫做setData()。现在我们开始一步步理解:一、关于js的数据类型js中的数据可以分为基础数据类型和引用数据类型1、基础数据类型如undefinded,null,Number,String,Boolean,原创 2020-06-06 17:54:06 · 578 阅读 · 1 评论 -
Javascript常见算法总结(持续更新)
1、用JS手写快速排序快排三步曲:(1)在数据集之中,选择一个元素作为“基准”(pivot)。(2)所有小于“基准”的元素,都移到“基准”的左边;所有大于“基准”的元素,都移到“基准”的右边。(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。var arr = [55, 66, 18, 10, 20, 30, 1, 2, 3, 12, 2];var result = quickSort(arr);console.log('结果: ' + resu原创 2020-05-20 21:52:50 · 581 阅读 · 0 评论