
js进阶
文章平均质量分 90
js 基础进阶
江海寄余生_
这个作者很懒,什么都没留下…
展开
-
【JS技巧】使用顶层 await 简化 JS 代码
前言JavaScript 是一种流行的编程语言,最初被设计为单线程和同步的语言,意味着程序需要在不等待获取外部资源或者耗时的计算的情况下一步一步的运行。如果脚本需要这样的资源或计算,这种同步行为将导致错误。这会阻塞队列中的所有其他进程运行,无论它们是否依赖于那些阻塞中的任务。但很久以前,JavaScript 引入了一个机制让其可以在等待外部资源或者耗时任务的时候去执行其剩余的代码。这种异步行为是通过在函数上使用回调或 promise 来实现的。什么是回调和promise我将通过代码来解释这些概念。如原创 2021-03-29 23:57:46 · 5884 阅读 · 0 评论 -
[js数据技巧] js小技巧集合
数组常用方法先献上数组方法懒人图一张祭天!(除了Array.keys()/Array.values()/Array.entries()基本都有):数组方法大全生成类似[1-100]这样的的数组:测试大量数组数据时可以:let arr = new Array(100).fill(0).map((item, index) => index + 1)数组解构赋值应用// 交换变量[a, b] = [b, a][o.a, o.b] = [o.b, o.a]// 生成剩余数组const原创 2020-06-21 23:08:53 · 438 阅读 · 0 评论 -
[JS日志]JavaScript工具函数整理
为元素添加on方法Element.prototype.on = Element.prototype.addEventListener;NodeList.prototype.on = function (event, fn) {、 []['forEach'].call(this, function (el) { el.on(event, fn); }); return this;};为元素添加trigger方法Element.prototype.trigg原创 2020-06-07 21:57:30 · 349 阅读 · 1 评论 -
[js日志]JS中的call、apply、bind方法详解
1.区别1.1三者的相同点:都是用来改变this的指向1.2 call()和apply()的区别:相同点:都是调用一个对象的一个方法,用另一个对象替换当前对象(功能相同)例如: B.call(A, args1,args2);即A对象调用B对象的方法F.apply(G, arguments);即G对象应用F对象的方法不同点:参数书写方式不同call()的第一个参数是this要指向的对象...原创 2020-05-19 11:47:13 · 109 阅读 · 0 评论 -
[JS日志]js中的回调函数callback
前言定义:在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。因此callback 不一定用于异步,一般同步(阻塞)的场景下也经常用到回调,比如要求执行某些操作后执行回调函数。一.先搞清楚异步和同步异步async/同步sync举个小栗子1.早上起来不论你是先刷牙还是先洗脸,都要等一个事情完毕后才能进行下一项,这就是一个同步的例子2.然后刷牙的时候你原创 2020-05-15 21:18:50 · 512 阅读 · 1 评论 -
[JS日志]setTimeout、Promise、Async/Await 的区别
1. setTimeoutconsole.log('1 start') //1. 打印 script startsetTimeout(function(){ console.log('settimeout') // 4. 打印 settimeout}) // 2. 调用 setTimeout 函数,并定义其完成后执行的回调函数console.log('2 end') //3. 打印 script start // 输出顺序:1 start->2 end->sett原创 2020-05-14 22:36:56 · 381 阅读 · 1 评论 -
[js日志]宏任务、微任务与Event Loop
1.宏任务和微任务说到宏任务和微任务,我们就不得不提 Event Loop 了JS的本质是单线:一般来说,非阻塞性的任务采取同步的方式,直接在主线程的执行栈完成。一般来说,阻塞性的任务都会采用异步来执行,异步的工作一般会交给其他线程完成,然后回调函数会放到事件队列中。当主线程的任务执行完了(执行栈空了),JS会去询问事件队列执行一个宏任务(先执行同步代码)–>执行所有微任务–>UI render–>执行下一个宏任务–>执行所有微任务–>UI rende原创 2020-05-14 22:22:19 · 333 阅读 · 0 评论