JS
文章平均质量分 58
记录自己学习JavaScript
铁锅炖大鹅努力学习前端中
保持对学习的热情。
展开
-
ESM 和 CommonJS 的区别
理解ESM和CommonJS原创 2023-02-23 11:34:04 · 201 阅读 · 0 评论 -
hasOwnProperty笔记
hasOwnProperty表示是否有自己的属性。这个方法会查找一个对象是否有某个属性,但是不会去查找它的原型链。遍历可以直接通过 forIn 循环执行,而判断是否为对象自身属性,则需要借助 hasOwnProperty 方法。一般在枚举的时候常用。书中的枚举指的主要是: 遍历一个对象并且获取该对象自身的所有属性。原创 2023-02-10 16:16:38 · 69 阅读 · 0 评论 -
深拷贝与浅拷贝
JavaScript分为基本数据类型和复杂数据类型,对于基本类型的拷贝,并没有深浅拷贝的区别,讨论的深浅拷贝都只针对复杂数据类型。网络上的很多文章觉得引用类型赋值就是浅拷贝,误导了很多人,但 lodash 中的浅拷贝和深拷贝总不会错吧,这么多项目都在用。但是浅拷贝只进行一层复制,深层次的引用类型还是共享内存地址,原对象和拷贝对象还是会互相影响。浅拷贝和深拷贝都复制了值和地址,都是为了解决引用类型赋值后互相影响的问题。深拷贝就是无限层级拷贝,深拷贝后的原对象不会和拷贝对象互相影响。原创 2023-02-05 00:21:03 · 70 阅读 · 0 评论 -
JavaScript数组去重的方法总结
new Set是ES6新推出的一种类型。他和数组的区别在于,Set类型中的数据不可以有重复的值。当然,数组的一些方法Set也无法调用。使用方法:将数组转化为Set数据类型,再转化回来,就完成了去重。原创 2023-02-01 23:31:41 · 96 阅读 · 0 评论 -
JS为什么是单线程
我们都知道,CPU是计算机的核心,承担所有的计算任务官网说法,进程是CPU资源分配的最小单位字面意思就是进行中的程序,可以将它理解为一个可以独立运行且拥有自己的资源空间的任务程序进程包括运行中的程序和程序所使用到的内存和系统资源。原创 2023-02-01 15:49:26 · 201 阅读 · 0 评论 -
var let const
var声明的变量挂在在全局window上面,let和const声明的变量不在window上。let 语句声明一个块级作用域的局部变量,并可以初始化为一个值(可选)。let 允许你声明一个作用域被限制在块作用域中的变量、语句或者表达式。与 var 关键字不同的是,var 声明的变量作用域是全局或者整个函数块的。var 和 let 的另一个重要区别,let 声明的变量不会在作用域中被提升,它是在编译时才初始化(参考下面的暂时性死区)。原创 2023-01-30 17:17:38 · 102 阅读 · 0 评论 -
前端面试总结(一)
Objects和Maps类似的是,它们都允许你按键存取一个值、删除键、检测一个键是否绑定了值。因此(并且也没有其他内建的替代方式了)过去我们一直都把对象当成Maps使用。MapObject确实对于Object来说,我们在 95%的情况下都会选择,它不仅写起来最简单,而且相较于下面的函数调用,在性能方面会更为高效。对于构建函数,可能唯一使用到的情况就是显式的封装一个基本类型;而可以为对象设定原型。和Object不同,Map没有那么多花里胡哨的创建方法,通常只会使用其来创建。使用MapSymbolMap。原创 2023-01-01 22:44:36 · 58 阅读 · 0 评论 -
JS运行机制
一个任务完成之后,才能执行另外一个任务。JavaScript 中有同步/异步任务的概念,同步任务在主线程上执行,会形成一个 执行栈,主线程之外,事件触发线程管理着一个 任务队列,只要异步任务有了运行结果,就在 任务队列 之中放一个事件回调。一旦 执行栈 中的所有同步任务执行完毕,就会读取 任务队列,将可运行的异步任务(任务队列中的事件回调,只要任务队列中有事件回调,就说明可以执行)添加到执行栈中,开始执行。同步/异步任务是广义上的,同时,JavaScript 中还有宏任务(macrotask)和微任务(m原创 2022-06-22 17:14:31 · 115 阅读 · 0 评论 -
ES6-总结ES6对象的新增方法
本文总结介绍对象的新增方法。ES5 比较两个值是否相等,只有两个运算符:相等运算符()和严格相等运算符()。它们都有缺点,前者会自动转换数据类型,后者的不等于自身,以及等于。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。不同之处只有两个:一是不等于,二是等于自身。ES5 通过下面转载 2022-06-21 22:10:08 · 300 阅读 · 0 评论 -
ES6-箭头函数
箭头函数是ES6中的提出来的,它没有,也没有自己的指向,更不可以使用参数,所以不能New一个箭头函数。new操作符的实现步骤如下:所以,上面的第二、三步,箭头函数都是没有办法执行的。(1)(2)箭头函数不会创建自己的this, 所以它没有自己的this,它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了,之后不会改变。(3)对象obj的方法b是使用箭头函数定义的,这个函数中的this就永远指向它定义时所处的全局执行环境中的this,即便这个函数是作为对象obj的原创 2022-06-13 11:33:42 · 113 阅读 · 0 评论 -
ES6-基础复习
let const var块级作用域: 块级作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了ES5中的两个问题:内层变量可能覆盖外层变量3. 用来计数的循环变量泄露为全局变量变量提升: var存在变量提升,let和const不存在变量提升,即在变量只能在声明之后使用,否在会报错。 (3)给全局添加属性:浏览器的全局对象是window,Node的全局对象是global。var声明的变量为全局变量,并且会将该变量添加为全局对象的属性,但是let和con原创 2022-05-27 13:57:27 · 78 阅读 · 0 评论