![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript
文章平均质量分 54
Kyyy.
这个作者很懒,什么都没留下…
展开
-
js 中的== 和===
==在相等运算中,应注意以下几个问题:如果操作数是布尔值,则先转换为数值,其中 false 转为 0,true 转换为 1。如果一个操作数是字符串,另一个操作数是数字,则先尝试把字符串转换为数字。如果一个操作数是字符串,另一个操作数是对象,则先尝试把对象转换为字符串。如果一个操作数是数字,另一个操作数是对象,则先尝试把对象转换为数字。如果两个操作数都是对象,则比较引用地址。如果引用地址相同,则相等;否则不等。NaN与任何值都不相等,包括它自己。null 和 undefined 值相等,但是它.原创 2021-11-01 21:24:51 · 155 阅读 · 0 评论 -
js垃圾清除机制(标记清楚,引用计数)
内存泄漏不再使用到的内存,没有及时释放,就是内存泄露所以为了避免手动的释放内存,就有了垃圾请除机制代码回收规则如下:1.全局变量不会被回收。2.局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁。3.只要被另外一个作用域所引用就不会被回收 (闭包中引用的变量不会被回收)垃圾回收的方法1,标记清除垃圾回收器会给在内存中的变量都做上标记,然后它会去除在环境中的变量和被环境中变量引用的变量(闭包)的标记,在这之后的被标记的变量就是需要清除的变量了。之后垃圾回收器将会回收这些变量原创 2021-11-01 20:56:14 · 2764 阅读 · 2 评论 -
js手写题
1,函数防抖和函数节流防抖和节流都是处理处理频繁调用的函数时的一个优化函数防抖在规定是一段时间内,只执行最后一次的函数调用,前面的不生效场景:在搜索框发请求时,避免用户打字幅度较快而发送太多没有必要的请求function debounce(func, wait) { var timer = null return function () { var ctx = this var args = arguments原创 2021-11-01 19:47:39 · 951 阅读 · 0 评论 -
JS事件循环
一,什么是事件循环javascript是单线程的脚本语言,一般情况下代码是同步执行的,所以js引擎遇到一个异步事件后并不会一直等待其返回结果,而是会将这个事件挂起,继续执行执行栈中的其他任务。当这个异步事件返回结果后,js会将这个事件加入到任务队列中等待被执行。任务又分为宏任务和微任务。宏任务:setTimeout,setInterval微任务:Promise Promise,process.nextTick当前执行栈执行完毕时,主线程会查看微任务队列有没有事件等待执行,如果有就将其压入执行栈中执原创 2021-10-25 23:35:45 · 141 阅读 · 0 评论 -
ES6 Promise
一,Promise到底是个啥?promise是一个构造函数,它用来封装异步操作,可以有效解决回调地狱问题以下使用promise封装ajax请求 var btn = document.getElementById('btn') btn.onclick = function () { const p = new Promise((resolve, reject) => { // 创建对象 const xhr = new原创 2021-10-25 22:34:19 · 116 阅读 · 0 评论 -
webpack生产环境的配置
const { resolve } = require("path");const MiniCssExtractPlugin = require('mini-css-extract-plugin')const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')const HtmlWebpackPlugin = require('html-webpack-plugin')//定义nodejs环原创 2021-04-26 21:40:53 · 80 阅读 · 0 评论 -
react-Difff算法的概念
react-Difff算法的概念Diff (different)tree diff :新旧两棵DOM树,逐层对比的过程。当整棵DOM树逐层对比完毕,则所有需要更新的元素必然能够找到。component diff:(component:组件)在进行tree diff 的时候,每一层中组件级别的对比。如果对比前后组件类型相同,则暂时认为此组件不需要被更新,如果对比前后组件类型不相同。则需要移除旧组件,创建新组件,并追加到页面上。element diff:在进行组件对比的时候,如果两个组件类型相同,原创 2021-03-08 17:17:36 · 276 阅读 · 0 评论 -
react-虚拟DOM的本质和目的
虚拟DOM的本质和目的虚拟DOM(Virtual Document Object Model)DOM是什么?浏览器中的概念,用JS对象来表示页面上的元素,并提供了操作DOM对象的API;什么是react中的虚拟DOM?是框架中的概念,是程序员用JS 对象来模拟页面上的DOM和DOM嵌套;虚拟DOM的目的是什么?为了实现按页面中DOM元素的高效更新;DOM和虚拟DOM的区别:1,虚拟DOM不会进行排版与重绘操作2,虚拟DOM进行频繁修改,然后一次性比较并修改真实DOM中需要改的部分(注意原创 2021-03-07 23:03:02 · 205 阅读 · 0 评论 -
JavaScript数据结构 ---- 优先级队列
优先级队列特点每个元素不再只是一个数据,而且包含数据的优先级在添加方式中,根据优先级放入正确的位置封装优先级队列 function PriorityQueue() { function QueueElement(element, priority) { this.element = element; this.priority = priority; } /原创 2020-11-30 20:38:28 · 88 阅读 · 0 评论 -
JavaScript 数据结构----队列
一,队列概念和结构队列是一种先进先出(FIFO)的数据结构。队列的第一个元素所在位置称为队头,最后一个元素所在位置称为队尾。不包含任何元素的队列称为空队列。队列基本操作enqueue(element):向队列尾部添加一个新的项dequeue():出队,移除队列的第一项,并返回被移除的元素front():返回队列中第一个元素(不移除元素,只返回信息)isEmpty():(empty:空的)队列为空,返回true,否则返回flasesize():返回队列包含的元素个数,与数组的leng原创 2020-11-30 20:33:28 · 91 阅读 · 0 评论 -
JavaScript 数据结构 --- 栈
JavaScript 数据结构 — 栈一,栈的基本操作1,push(elemenet):压栈,添加一个新元素到栈顶位置2,pop():出栈,移除栈顶元素,同时返回被移除的元素3, peek():返回栈顶元素,不对栈做任何修改(这个方法不会移除栈顶元素,仅仅返回它)4,isEmpty():(empty:空的)栈为空,返回true,栈不为空,返回false5,size():返回栈里元素个数,与数组中的length方法类似6,toString():将栈结构的内容以字符串的形式返回二,封装栈 fu原创 2020-11-30 20:24:58 · 74 阅读 · 0 评论 -
ES6 set和map数据结构(数据结构之间的转换)
一、set1,基本用法ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成Set数据结构。 var s = new Set(); var arr = [1, 2, 2, 2, 3, 4, 5, 6, 6]; arr.map(x => s.add(x)); console.log(s); //1,2,3,4,5,6以上代码通过add方法向s中添加成员,结果表示Set原创 2020-11-26 20:27:49 · 377 阅读 · 1 评论 -
ES6 对象的扩展、Symbol
ES6 对象的扩展、Symbol一、对象的扩展1、 属性的简洁表示法ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。var some='aaa';var obj={some};console.log(obj); //{some:aaa}//等同于 var obj={some:some}//只写属性名,不写属性值。这时,属性值等于属性名所代表的变量除了属性简写,方法也可以简写。var obj={ func(){ return 'hi!'原创 2020-11-04 23:10:28 · 155 阅读 · 2 评论 -
ES6 函数的扩展
ES6 函数的扩展一,函数参数的默认值ES6允许为函数的参数设置默认值,即直接写在参数定义的后面。 function log(x, y = 'world') { console.log(x + ' ' + y); } log('hello', 'hello'); //hello hello log('hello'); //hello world log('hello',); //hello wo原创 2020-10-25 15:05:46 · 118 阅读 · 0 评论 -
ES6 数值的扩展、数组的扩展
ES6 数值的扩展、数组的扩展一、数值的扩展1,二进制和八进制的表示ES6提供了二进制和八进制数值的新的写法二进制前缀:0b、0B八进制前缀:0o、0O2,Number.isFinite() 和 Number.isNaN() 方法Number.isFinite() 用来检验一个数值是否非无穷(infinite)。例: //infinite 极大的 无法测量的 无穷 console.log(Number.isFinite(5)); //true原创 2020-10-18 12:10:22 · 184 阅读 · 0 评论 -
字符串的新增方法
字符串的新增方法一,String.fromCodePoint()ES6 提供了String.fromCodePoint()方法,可以识别大于0xFFFF的字符,弥补了String.fromCharCode()方法的不足。该方法的作用与codePointAt()方法相反。String.fromCharCode(0x20BB7); // "ஷ"String.fromCodePoint(0x20BB7)// "????"在上面代码中,String.fromCharCode()方法,用于从原创 2020-10-08 18:43:09 · 292 阅读 · 0 评论 -
ES6正则表达式的扩展
ES6正则表达式的扩展一, RegExp 构造函数如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。例:new RegExp(/abc/ig, 'i').flags// "i"二, 字符串的正则方法以下方法,在语言内部全部调用RegExp的实例方法,可以使用正则表达式:match()、replace()、search()和split()。三,u修饰符正则表达式添加的原创 2020-10-08 17:59:28 · 128 阅读 · 0 评论