
JavaScript
文章平均质量分 68
一只小 Ziyi.
但愿日子清静,抬头遇见的都是柔情
展开
-
前端面试之ajax
1.认识Ajax Ajax = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 Ajax 不是新的编程语言,而是一种使用现有标准的新方法。 Ajax 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下,说的简单点就是Ajax可以实现局部刷新。 2.使用Ajax的好处 1.无刷新——不刷新整个页面,只刷新局部。 无刷新的好处 只更新部分页面,有效利用带宽 提供连续的用户体验 提供类似 C/S 的交互效果,操作更方原创 2021-03-24 21:53:47 · 149 阅读 · 0 评论 -
前端面试之事件
事件监听函数 <div id="box">123</div> <script type="text/javascript"> //获得此元素 var box = document.getElementById("box"); /* * 函数名:clickFn * 功能:一个普通的函数,实现打印功能 */ function clickFn(){ console.log( box.innerHTM原创 2021-03-22 21:16:56 · 165 阅读 · 0 评论 -
前端面试之Bom
什么是BOM? 1.什么是BOM? BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部。 在不同的Unicode编码中,对应的bom的二进制字节如下: Bytes Encoding FE FF UTF16BE FF FE UTF16LE EF BB BF UTF8 所以我们可以根据文件头部的几个字节和上面的表格对应来判断该文件是哪种编码形式。 2. 如何查看你文件的BOM字符? BOM头在记事本中是看不到的 以UTF8为例,新建转载 2021-03-21 20:24:42 · 553 阅读 · 0 评论 -
前端面试之Dom
DOM分类 DOM按其内容可分为5个部分 核心DOM:是用于XML与HTML的共用接口; XMLDOM:XML专用接口; HTML DOM:HTML专用接口; DOM事件模型:定义DOM能够响应的事件; CSS DOM:CSS专用接口 HTML节点树 HTML文档是一种树状的结构化文档、各标记之间是一种树状的层次关系 说明 结构树反映了各HTML元素之间的层次关系。包含和’,包含;又包含<h1>和<table>等<br/> DOM就通过这种树结构的层次关系,来定位、转载 2021-03-21 20:20:43 · 581 阅读 · 0 评论 -
前端面试之事件循环(event loop)、微任务和宏任务
一、JS的事件循环机制eventloop 1、 Eventloop是什么? javascript中先分【同步和异步】,然后事件任务分为【宏任务和微任务】, 执行顺序是先执行微任务再执行宏任务。(异步顺序也是如此) 先执行主线程同步的微任务,发现异步之后,放入到异步队列中 然后执行同步的宏任务,宏任务执行完毕 执行刚才的异步任务。此顺序反复执行loop 宏任务:整体代码script,setTimeout, setInterval 微任务:Promise.then(非new Promise) console原创 2021-03-21 20:13:19 · 1819 阅读 · 1 评论 -
前端面试之异步、单线程
一、异步和同步的区别 同步: JS是单线程语言,只能同时做一件事儿。js任务需要排队顺序执行,如果一个任务时间过长,后边的任务也会等着。假如,我们在请求一个网址时,图片加载很慢,网页总不能一直卡不出来,这个时候就可以用异步来解决了。 异步: 异步就是由单线程这个背景而来的,解决了单线程等待的这个问题,异步的特点不会阻塞后面代码的执行。也就是请求处理过程中,你不能闲着,会产生异步的请求,回头再处理,然后继续执行下面的请求 异步和单线程是相辅相成的,js是一门单线程脚本语言,所以需要异步来辅助 二、前端使用异步原创 2021-03-18 21:39:23 · 401 阅读 · 0 评论 -
前端面试之原型、class以及数据类型判断
一,函数对象 所有引用类型(函数,数组,对象)都拥有__proto__属性(隐式原型) 所有函数拥有prototype属性(显式原型)(仅限函数) 原型对象:拥有prototype属性的对象,在定义函数时就被创建 二、构造函数 //创建构造函数 function Word(words){ this.words = words; } Word.prototype原创 2021-03-16 20:28:55 · 635 阅读 · 0 评论 -
关于性能优化的一些方法
页面优化有哪些方法? 一、减少操作量 1. 尽量减少 HTTP 请求 合并文件,比如把多个 CSS 文件合成一个; CSS Sprites 利用 CSS background 相关元素进行背景图绝对定位; 2. 不要在 HTML 中使用缩放图片 缩放图片并没有减少图片的容量,只是控制了图片的大小。 3. Image压缩 使用工具对图片进行压缩,保证质量的同时减少了图片的大小。 4. 减少对DOM的操作 减少对DOM的操作,减少页面的重绘。 二、提前做加载操作 对域名进行预解析 例如京东的做原创 2021-01-19 19:57:32 · 141 阅读 · 0 评论 -
说说你对async的理解
今天给大家分享一篇文章,是我在微信公众号:前端进阶之旅 上看到的,感觉还不错,感兴趣的小伙伴可以文末关注一下公众号 原文地址:面试官:谈谈你对async的理解 接下来让我们进入正题 anync是什么? async是generator和promise的语法糖,利用迭代器的状态机和promise来进行自更新! 如果懒得往下看,可以看下这个极其简易版本的实现方式: // 复制粘贴即可直接运行 function stateMac (arr) { let val; return {转载 2021-01-16 10:15:50 · 540 阅读 · 0 评论 -
ES6中 let,const和 var 三者的区别
在ES6中,新增了let命令,用于声明变量,用来取代ES5中var命令,消除var声明的变量的不合理,不严谨之处。const用于声明常量。 让我们来看看let和var的区别 ES6 新增 const 和 let 命令,用来声明变量。 变量提升: const 和 let 必须先声明再使用,不支持变量提升 使用let声明的变量,不会像使用var那样存在“变量提升“”的现象。所以使用let声明变量,必须遵循“先声明,后使用”的原则。否则会报错 console.log(a); //ReferenceError l原创 2021-01-14 21:32:41 · 246 阅读 · 0 评论 -
关于rem 针对设计稿宽度,设计rem调试比例
css3规定:1rem的大小就是根元素html的font-size的值。 通过设置 根元素的font-size的大小,来控制整个html文档内的字体大小、元素宽高、内外边距等, 根据移动设备的宽度大小来实现自适应,不同的设备都展示一致的页面效果。 为了计算方便,一般建议 1rem = 100px(设计稿px),要换算这样的比例需要设置html对应的fontSize,计算规则如下: fontSize = 屏幕宽度 / 设计稿宽度 * 基本宽度 如果基本宽度是100,那么 1rem = 100px(设计稿p原创 2021-01-14 20:02:11 · 1374 阅读 · 1 评论 -
关于JavaScript线程,事件循环,微任务宏任务
javascript单线程 由于JavaScript是单线程语言,因此,在一个进程上,只能运行一个线程,而不能多个线程同时运行。也就是说JavaScript不允许多个线程共享内存空间。因此,如果有多个线程想同时运行,则需采取排队的方式,即只有当前一个任务执行完毕,后一个任务才开始执行 1. JS将任务分为两种,同步任务和异步任务。 2. 当主线程开始执行同步任务时,会创建一个“执行栈”,每一个同步任务排队执行,只有前一个任务执行完毕,才会执行下一个任务。 3. 当主线程上的所有同步任务执行完毕之后,也就是当原创 2021-01-14 19:45:49 · 118 阅读 · 0 评论 -
深拷贝浅拷贝,原型,类型校验,递归深拷贝
1.深拷贝和浅拷贝 深拷贝和浅拷贝的区别: 1.浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引用 2.深拷贝: 创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用” 为什么要使用深拷贝? 我们希望在改变新的数组(对象)的时候,不改变原数组(对象) 内存模型 JS内存空间分为栈(stack)、堆(heap)、池(一般也会归类为栈中)。 其中栈存放变量,堆存放复杂对象,池存放常量。 基本数据类型与栈内存 JS中的基础数据类型原创 2021-01-13 20:37:25 · 98 阅读 · 0 评论 -
冒泡排序、递归
冒泡排序方法 第一种方法: 比较相邻的两个元素,如果前一个比后一个大,就会交换位置 第一次比较时将最大的元素放到了最后面 由于每次排序最后一个都是最大的,所以之后按照步骤1排序最后一个元素 不用比 function arr(data) { var temp for(var i = 0; i<data.length-1;i++) { for(var j = 0; j<data.length - i; j++) { if(data[j]) > data[j原创 2021-01-11 17:21:30 · 790 阅读 · 1 评论 -
Promise解决问题与async函数的使用
Promise Promise是干什么的? 1、主要用于异步计算 2、可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果 3、可以在对象之间传递和操作promise,帮助我们处理队列 Promise 对象用于表示一个异步操作的最终完成 (或失败), 及其结果值. 先用代码简单实现一下: function waiting() { return new Promise((resolve, reject) => { //这里用定时器模拟我请求ajax/原创 2021-01-16 20:19:22 · 1388 阅读 · 0 评论