JavaScript
SpringSir
道阻且长,行则将至。
展开
-
数组中出现次数最多的数和出现的次数
数组中出现次数最多的数和出现的次数let arr = [44, 44, 44, 11, 22, 33, 22, 11, 22, 33, 44]// 找出每个元素出现的次数let newObj = arr.reduce((accumulatorObj, value) => { accumulatorObj[value] ? accumulatorObj[value] = ++accumulatorObj[value] : accumulatorObj[value] = 1 retu原创 2022-01-20 15:58:24 · 593 阅读 · 0 评论 -
跨域原因, 多种解决方案
跨域原因是由于浏览器的同源策略限制;跨域指: 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域JSONP这种方式并不适用于开发, 可以说是被完全淘汰, 但是由于实现复杂, 面试官对于这种方案的深究非常追崇.核心思想: 网页通过添加一个<script>标签的src属性,向服务器请求 JSON 数据,服务器收到请求后,将数据放在一个指定名字的回调函数的参数位置传回来。缺点:需要后端配合才能完成只能发送get请求实现:注意后端返原创 2021-09-11 18:37:51 · 121 阅读 · 0 评论 -
undefined与null的区别
null表示"没有对象",即该处不应该有值。典型用法是:作为函数的参数,表示该函数的参数不是对象;作为对象原型链的终点。undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:变量被声明了,但没有赋值时,就等于undefined;调用函数时,应该提供的参数没有提供,该参数等于undefined;对象没有赋值的属性,该属性的值为undefined;函数没有返回值时,默认返回undefined。...原创 2021-09-08 18:17:22 · 439 阅读 · 0 评论 -
js中slice、split、splice、的比较
js中slice、split、splice、的比较首先对单词释义slice注意split注意splice首先对单词释义slice: 强调的是用刀片将某个物体切割成某种特定的形状,因此常常用于食物、工业行业相关的切割。split: 强调的是使用力量将一个物体切成两块或多块。强调的是原本一体的东西被分割成了多块。splice: 连接的意思* 及物动词绞接; 捻接(两段绳子); 胶接; 粘接(胶片、磁带等);* 名词:胶接处,粘接处,铰接处slice语法: arr.slice(原创 2021-09-07 20:12:22 · 221 阅读 · 0 评论 -
JS-内存回收机制
什么是垃圾?一般而言, 没有被引用的变量就是垃圾, 会被清除;有一个例外, 如果几个对象互相引用, 形成了一个闭环. 虽然有引用, 但是也是垃圾.垃圾清除算法标记清除-常用从全局变量开始, 一层一层的往下标记, 所有被标记到的就是不会清除的;标记完成以后, 就会把没有被标记的清除回收引用计数每次一个对象被引用的时候, 就会加一;再被引用的时候, 再加一;有人不引用的时候, 就减一,当减到0的时候, 这个对象就会被清除回收清除时间当使用以上两种算法, 满足回收原创 2021-09-07 12:12:00 · 224 阅读 · 0 评论 -
JS-把并列的对象数组转为树状结构
// 将并列对象数组, 转换为树状结构turnData(arr, pid){ const newArr = [] arr.forEach(item => { if(item.pid === pid){ const children = this.turnData(arr, item.id) if(children.length > 0){ item.children = children } newArr.push原创 2021-09-02 23:13:16 · 230 阅读 · 0 评论 -
JavaScript - 通用类型判断-Object.prototype.toString.call()封装
function getType (value) { return Object.prototype.toString .call(value) .match(/\s+(\w+)/)[1] .toLowerCase()}console.log(getType('')) // stringconsole.log(getType(2)) // numberconsole.log(getType原创 2021-08-19 08:45:14 · 373 阅读 · 0 评论 -
npm-查看包所有版本和下载指定版本包
以jquery为例:查看包所有版本 npm view jquery versions下载指定版本包 npm install [email protected]原创 2021-08-18 17:41:04 · 987 阅读 · 0 评论 -
解构对象 - 无声明赋值
详情点击此处—>mdn详讲:无声明赋值一个变量可以独立于其声明进行解构赋值。var a, b;({a, b} = {a: 1, b: 2});注意:赋值语句周围的圆括号 ( … ) 在使用对象字面量无声明解构赋值时是必须的。{a, b} = {a: 1, b: 2} 不是有效的独立语法,因为左边的 {a, b} 被认为是一个块而不是对象字面量。然而,({a, b} = {a: 1, b: 2}) 是有效的,正如 var {a, b} = {a: 1, b: 2}你的 (原创 2021-08-18 14:39:54 · 266 阅读 · 0 评论 -
在箭头函数中, 返回字面量形式的对象
需要用小括号把对象字面量包起来;大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上小括号。const arrO = [{ a: 12, b: '卡卡西', name: '鸣人' }]const newArr = arrO.map(({ a, b }) => ({ a, b }))console.dir(newArr)...原创 2021-08-18 14:31:08 · 133 阅读 · 0 评论 -
ES2015(ES6)+
JES2015-ES6目录名词释义ECMAScriptES2015ES6let 和 const箭头函数函数的参数默认值用法示例模板字符串扩展(展开) 运算符解构赋值对象解构赋值数组的解构赋值应用-解构赋值结合函数声明对象成员的简写概述Symbol作为对象属性Symbol.for内置SymbolSymbol的属性Set和WeakSetSet实例WeakSetMap和WeakMapMap实例1:扩展对象实例2:完善私有属性的实现WeakMap实例:完善私有属性的实现ProxyReflect 反射Iterator原创 2021-08-11 11:13:46 · 732 阅读 · 0 评论 -
JS-字符串的replace方法配合正则的使用
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Doc原创 2021-08-10 18:32:40 · 211 阅读 · 0 评论 -
JS-函数防抖与节流
JS-函数防抖与节流目录防抖引入防抖场景1(鼠标移入)防抖场景2(键盘按键)函数节流防抖经典应用常见: 手风琴效果引入没有做防抖的网站:做了防抖的网站:防抖场景1(鼠标移入)抖动 : 用户本来不想触发这个交互,但是由于鼠标不小心抖动误触发交互事件。例子: 想看第五张图片,。不想看2 3 4张。 但是鼠标从第1张滑到第五张时候,不小心放在了2 3 4上面。误触发。函数防抖 : 用户连续多次触发某个事件,则只执行最后一次实例及解决代码:<!DOCTYPE html&原创 2021-08-10 18:29:53 · 114 阅读 · 0 评论 -
JS三座大山-同步异步-作用域、闭包-原型、原型链
JS三座大山同步异步前端中只有两个操作是异步的:定时器异步执行;ajax异步请求编译器解析+执行代码原理:编译器从上往下逐一解析代码判断代码是同步还是异步同步:立即执行异步:不执行。放入事件队列池等所有同步执行完毕开始执行异步同步异步区别api : 异步有回调,同步没有回调性能 : 异步性能好(不阻塞线程) 同步会阻塞线程顺序 : 同步有序执行,异步无序执行另:回调函数:如果一个函数的参数是一个函数,那么这个参数函数叫做回调函数作用域、闭包原创 2021-08-07 21:50:24 · 217 阅读 · 0 评论 -
JS之预解析和变量提升
什么是预解析?概念:JS代码在在代码从上往下执行前,浏览器会先把所有变量声明解析一遍, 这个阶段叫预解析。详讲寻找作用域中的var 和function声明(匿名函数没有function声明,所以不会提升),然后对其进行事先声明, 并把赋值操作留在原地,再从上到下执行代码。这就是一个预解析的过程。变量和函数预解析的区别 在预解析时,会把所有用 var 声明的变量, 和 function 声明的函数,提升到所在的作用域最顶端var声明的变量, 在预解析的时, 只是提原创 2021-08-07 21:29:44 · 286 阅读 · 0 评论 -
面试 - 地址栏输入url回车后, 发生了什么?
原文来自于https://blog.csdn.net/weixin_44743841/article/details/106212731 目录 1、在浏览器中输入一个URL 2、浏览器查找域名的IP地址 3、浏览器向web服务器发送HTTP请求 4、服务器的永久重定向响应 5、浏览器跟踪重定向地址 6、服务器处理请求 7、服务器返回一个HTTP响应 8、浏览器显示HTML 9、浏览器发送请求获取嵌原创 2021-08-07 08:47:33 · 197 阅读 · 0 评论 -
JS中Object.getOwnPropertyNames()与Object.keys(obj)的区别
大部分情况下Object.getOwnPropertyNames()与Object.keys(obj)的功能是一样的,都是获取对象中的所有属性, 并以数组的形式返回.区别:Object.getOwnPropertyNames返回的是对象中所有自己的属性;Object.keys(obj)则返回的对象中所有自己的属性,也就是属性下的 enumerable: true 的属性const obj = {};Object.defineProperties(obj, { name: {enum原创 2021-08-07 08:39:44 · 650 阅读 · 2 评论