随笔分类 - javascript
esm中的符号绑定
摘要:在使用结构赋值的时候,如下图,打印的count都是1,因为结构赋值其实重新开辟了一块内存空间。 在用esm导出的时候 会发现第二个count变成了2,这是因为他们是同一块内存空间。这叫做符号绑定。 解决:导出的时候使用常量 const
js中“??“和“?.“怎么用?
摘要:### ??:空值合并操作符 逻辑操作符,左侧为null和undefined时,才返回右侧的数 ### ?. :可选链操作符 可以读取位于连接对象链深处属性的值,不必明确验证链中的每个引用是否有效 功能类似于“.” 链式操作符,不同之处在于,在引用为空null 或者 undefined 的情况下不会
JS根据一个数组过滤另一个数组对象
摘要:const arr1 = [ {id: 1, name: 'aaa'}, {id: 2, name: 'bbb'}, {id: 3, name: 'ccc'}, {id: 4, name: 'ddd'} ] const arr2 = [ {uid: 2, uname: 'eee'}, {uid:4,
proxy代理
摘要:一、Proxy是什么? 1.1 理解Proxy MDN定义:Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。 通俗的讲Proxy是一个对象操作的拦截器,拦截对目标对象的操作,进行一些自定义的行为,一种分层的思想有点类似spring的AOP。 1.2 Proxy怎么
require.context()
摘要:1.使用场景: 在当前的前端开发过程中,大部分都是单页面模块化开发,那么当模块达到一定规模的时候,手动添加导出引用显得有点麻烦,那么我们可以使用webpack的require.context来实现我们的动态引入,只需要按照规定的格式书写代码即可 2.用法: require.context() 可以给
map类型
摘要:一、基本介绍 ECMAScript6以前,在JavaScript中实现“键/值”式存储可以使用Object来方便高效地完成,也就是使用对象属性作为键,再使用属性来引用值。但这种实现并非没有问题,为此TC39委员会专门为“键/值”存储定义了一个规范。 作为ES6的新增特性,Map是一种新的集合类型,为
短路运算
摘要:逻辑与&&的运算 如果两边都为数字,或字符串数字,则返回右边的 如果左边的值为 【true 】,不管右边的值是(真)是(假)都返回右边的 如果左边的值为 【false 】,则都返回左边的,那么返回左边的值,但是当逻辑与的左边为 null/NaN/undefined ,结果就会得到null/NaN/u
结构赋值
摘要:// 变量先声明后赋值时的结构 var a, b, rest; [a, b] = [10, 20]; // a 10; b 20 // 变量声明并赋值时的结构 var [a, b] = [10, 20, 30, 40, 50]; // a 10; b 20 // 默认值 var [a = 12,b]
javascript面试题
摘要:1. null和undefined区别 首先 Undefined 和 Null 都是基本数据类型,这两个基本数据类型分别都只有一个值,就是 undefined 和 null。 undefined 代表的含义是未定义,null 代表的含义是空对象。一般变量声明了但还没有定义的时候会返回 undefin
浏览器事件循环
摘要:执行js代码的时候,遇见同步任务,直接推入调用栈中执行,遇到异步任务,将该任务挂起,等到异步任务有返回之后推入到任务队列中,当调用栈中的所有同步任务全部执行完成,将任务队列中的任务按顺序一个一个的推入并执行,重复执行这一系列的行为。 异步任务又分为宏任务和微任务。 宏任务:任务队列中的任务称为宏任务
JS中的prototype、__proto__与constructor
摘要:###1. 前言 作为一名前端工程师,必须搞懂JS中的prototype、 proto 与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞懂它们。这里说明一点,proto 属性的两边是各由两个下划线构成(这里为了方便大家看清