JavaScript
文章平均质量分 50
JS相关
编程本就是逆天而行
这个作者很懒,什么都没留下…
展开
-
JS 中的 import 与 export
模块模块就是实现特定功能的一组方法。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。但是,JavaScript 不是一种模块化编程语言,在 ES6 以前,它是不支持类,所以也就没有模块了。JavaScript 社区做了很多努力,在现有的运行环境中,实现”模块”的效果。原始写法只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。function f1(){ //...}function f2(){ //... }上面的函数 f1(原创 2021-09-13 15:58:29 · 18983 阅读 · 1 评论 -
深拷贝和浅拷贝的实现
1原创 2021-08-17 11:02:17 · 109 阅读 · 0 评论 -
关于闭包的理解
闭包函数:声明在一个函数中的函数,叫做闭包函数。闭包:内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。特点:让外部访问函数内部变量成为可能;局部变量会常驻在内存中;可以避免使用全局变量,防止全局变量污染;会造成内存泄漏(有一块内存空间被长期占用,而不被释放)闭包就是可以创建一个独立的环境,每个闭包里面的环境都是独立的,互不干扰。闭包会发生内存泄漏,每次外部函数执行的时 候,外部函数的引用地址不同,都会重新创建一个新的地址。但原创 2021-08-17 09:59:38 · 573 阅读 · 0 评论 -
处理异步编程
1. 回调函数// 异步请求ajax(url, () => { // 请求返回后的逻辑处理})// 读取文件fs.readFile('/etc/shells', function (err, data) { // 文件读取完毕后的操作 console.log(data);});优点:简单、容易理解和部署缺点:回调地狱,不利于代码的阅读和维护,各个部分之间高度耦合,流程会很混乱,而且每个任务只能指定一个回调函数2. 事件监听采用事件驱动模式。任务的执行不取原创 2021-07-30 11:41:33 · 131 阅读 · 0 评论 -
函数防抖与函数节流
函数防抖函数防抖(debounce),就是指触发事件后,在 n 秒内函数只能执行一次,如果触发事件后在 n 秒内又触发了事件,则会重新计算函数延执行时间。举个栗子:搜索框输入完实时请求搜索用户名、手机号、邮箱等输入验证浏览器窗口大小改变后,窗口调整完后,再执行 resize 事件中的代码,防止重复渲染function debounce(fn, wait) { let timer = null; return function () { if (timer !=原创 2021-07-14 11:46:24 · 115 阅读 · 0 评论 -
LHS查询和RHS查询
LHS当变量出现在赋值操作的左侧时试图找到变量容器本身查找的目的是对变量进行赋值不成功的LHS会导致自动隐式地创建一个全局变量(非严格模式),或者抛出ReferenceError异常(严格模式)a = 1// 这里对a进行LHS查询,想要为赋值操作找到目标。RHS当变量出现在赋值操作的右侧时进行RHS查询试图找到变量的值查找的目的是获取变量不成功的RHS会导致抛出ReferenceError异常console.log(a)//这里对a的进行RHS查询,因为a并没有赋予任何原创 2021-06-18 16:27:00 · 452 阅读 · 0 评论 -
JavaScript数组的常用方法
splicesplice() 方法向数组中添加项目或从数组中删除项目,然后返回被删除的项目,该方法会改变原始数组参数描述index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。howmany必需。要删除的项目数量。如果设置为 0,则不会删除项目。item1, …, itemX可选。向数组添加的新项目。let arr = ['茨木', '妖刀', '酒吞', '阎魔']// 向数组中新增元素arr.splice(2, 0, '.原创 2021-06-17 15:17:37 · 234 阅读 · 0 评论 -
var let const的区别
相同都可以用来声明变量不同var是ES5提出的,let和const是ES6提出的。var声明的变量存在变量提升,变量可以在声明之前调用,值为undefined。let和const不存在变量提升,它们声明的变量一定要在声明后使用,否则报错(ReferenceError)console.log(a) //undefinedvar a = 1 ;console.log(b) //ReferenceError: b is not definedlet b = 2;console.log(c)原创 2021-06-07 11:37:23 · 106 阅读 · 0 评论 -
一看就会的数组遍历
遍历数组的方法太多了,还全部常用,这就很离谱先搞一个数组出来let arr = [ {id: 0, name: '阿离' }, {id: 1, name: '千姬' }, {id: 2, name: '小缘' }, {id: 3, name: '青灯' }]for 循环for (let i = 0; i < arr.length; i++) { console.log(arr[i])}// 输出// {id: 0, name: "阿离"}原创 2020-11-06 17:50:12 · 145 阅读 · 0 评论 -
一看就会的对象遍历
前两种比较常用,其他的花里胡哨的俺记不住for…in返回所有可枚举属性let person = { id:1, name:"ALi", age:17};for(let key in person){ console.log(key + '---' + person[key])}// 输出// id---1// name---ALi// age---17Object.keys() 和 Object.values()参数:要返回其枚举自身属性的对象返回值:一个表示给定原创 2020-11-06 16:15:28 · 193 阅读 · 0 评论 -
JS函数中 this 的指向问题
直接使用function fn(data){ console.log(data);}fn('hello') //hello//fn('hello') 等同于 fn.call(window,'hello'),此时 this 指向 window函数作为对象的方法被调用时,谁调用就指向谁let someone = { name: '石昊', intro: function (age) { console.log(`${this.name}在${age}岁时就比.原创 2021-06-03 17:31:00 · 93 阅读 · 0 评论