
JavaScript基础
文章平均质量分 62
yangxinxiang84
这个作者很懒,什么都没留下…
展开
-
Vue3组合式Api script setup模式中顶层使用await报Top-level ‘await‘ expressions are only allowed when the ‘module‘
今天练习Vue3的Suspense组件的时候碰到在Vue3组合式Api script setup模式中顶层使用await时报错Eslint错误(能正常编译),错误提示是:Top-level 'await' expressions are only allowed when the 'module' option is set to 'es2022', 'esnext', 'system', 'node16', or 'nodenext', and the 'target' option is set t原创 2023-04-13 21:02:52 · 5466 阅读 · 0 评论 -
很有意思的Generator function函数做参数的调用问题
Generator function 生成函数的调用和启动不一样,调用之后,函数不没有启动,只有再调用gen.next()的时候,才进入函数体,函数才启动。原创 2023-03-18 12:39:09 · 249 阅读 · 0 评论 -
图解推导爬楼梯(跳台阶)问题详细过程
1,题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。,2,递推公式(状态转移方程)推导分析,需求比较简单。拿到这个题目的第一想法就是递归,但是这个递推公式是怎么得来的?我居然陷入了逻辑死胡同,花了很长时间才彻底绕出来了。不多说,先上图:图片链接:上楼梯(1次上1台或者2台)问题 | ProcessOn免费在线作图,在线流程图,在线思维导图 |认真的看上图,可以看出:上到原创 2021-11-11 23:06:32 · 4925 阅读 · 0 评论 -
JavaScript实现归并排序算法并详解
归并排序是非常经典的基础排序之一,使用分治的思想,分而治之。先将待排序数组分拆为更小的数组,一直拆分到只有一个元素(只有一个元素的数组就是有序的),然后对分拆的数组按顺序进行合并。这个思想就是分而治之的思想,变成实现的时候,常用递归编程技巧来实现。直接上图来说这个过程(图是拷贝网上的):这里重点详细讲一下合并过程,合并被分解好的左右两部分的时候,左右两部分分别已经排好了,因此可以按如下图策略合并:比如需要合并left [1,5,6]的数组和right [2,3,4]数组的过程图:..原创 2021-08-30 20:16:00 · 993 阅读 · 0 评论 -
图解JavaScript单向循环链表及其反转实现
上一篇讲解分析了一下单向链表的反转实现。再看一下单向循环链表的反转。(高清图地址: https://www.processon.com/view/link/6121c41363768958e5302f6e)1,直观的看一下区别:先直观的看一下【单向链表】和【单向循环链表】的区别反转之后的指针(引用)指向:2,实现策略:2.1,从头节点开始遍历整个链表,直到找到尾节点。循环尾节点的判断是【尾节点】等于【头节点】 ,之前单向非循环链表的尾节点判断是节点的n...原创 2021-08-22 11:31:41 · 699 阅读 · 0 评论 -
JavaScript正则表达式的分组匹配详解
1,分组下面的正则表达式可以匹配kidkidkid:const reg = /kidkidkid/而另一种更优雅的写法是:const reg = /(kid){3}/这里由圆括号包裹的一个小整体称为分组。2,候选一个分组中,可以有多个候选表达式,用|分隔:这里的|相当于“或”的意思。var reg = /I love (him|her|it)/; reg.test('I love him') // true reg.test('I love her') /转载 2021-08-11 17:48:18 · 2342 阅读 · 0 评论 -
ES6的三个点(... 扩展运算符)应用场景小结
https://www.processon.com/view/link/610a94ca1e0853337b1bd06f1,解构赋值1.1,解构数组将数组中未解构的内容全部赋值合并在一个数组中给...后面的参数function test1(){ const[a,b,...c]=[1,5,7,12,15,18]; console.log(c); // [ 7, 12, 15, 18 ]}此时剩余参数必须是最后的元素,比如下面这个会报错:funct...原创 2021-08-04 22:00:02 · 409 阅读 · 0 评论 -
ES6中super关键字小结
小结参考:https://www.processon.com/view/link/61081304e0b34d3e35b7d0f6#map一、在类class中实行super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。作为函数时,super()只能用在子类的构造函数之中,用在其他地方就会报错。class A {}class B e原创 2021-08-02 23:49:04 · 313 阅读 · 0 评论 -
ES6新特性在较低版本node或者浏览器环境下的支持问题
这里持续的记录一些在较低版本的node环境或者浏览器下,ES6新特性的兼容问题。处理也很简单,用webpack编译一下,或者升级运行环境。1,类实例属性的新写法class Logger { // 类实例属性的新写法 在我的机器node v10.16.0下会报错,高版本node v14不会报错 level = "debug"; // 类实例属性的新写法 在我的机器node v10.16.0下会报错,高版本node v14不会报错 outoutPath = "../l原创 2021-08-01 10:32:52 · 638 阅读 · 0 评论 -
小技巧:前端用不同的方式实现斐波那契 fibonacci数列
斐波那契fibonacci数列是经典的入门算法题,定义是:从第3项开始,前面相邻两项之和,构成了后一项。也就是,从第3项开始,每一项等于前面两项之和。从定义看,最直观的就是递归,走一版:版本1:/** * 计算斐波那契数列第n项的值 * @param {*} n * @returns 第n项的值 */function fibonacci(n){ if(n<=1) { return 1; } return fibonacci(n-...原创 2021-07-30 15:58:01 · 548 阅读 · 0 评论 -
小技巧: 用ES6的方式获取URL链接中的参数
直接撸代码:function getURLParams() { const searchURL = location.search; // 获取到URL中的参数串 const params = new URLSearchParams(searchURL); const valueObj = Object.fromEntries(params); // 转换为普通对象 return valueObj;}...原创 2021-07-24 16:21:51 · 2810 阅读 · 0 评论 -
深入理解JavaScript的执行流程,执行上下文EC、变量对象VO、活动对象AO、作用域Scope(链)
这几天在梳理JS基础,花了两天的时间重新完整的梳理了JS的执行机制,参考了很多网文、ECMAScript规范、MDN的文章,在此做一个总结。感觉这次梳理的应该比较清晰了。(本文中一部分示例代码和图片是copy来的哈)。一、名词解释:执行上下文环境:也叫执行上下文,Execution Context,下文中简写为EC。(没找到一个官方的定义)个人理解是JS在运行时候记录JS运行的时候需要用到的各种属性等信息的一个对象,主要供JS引擎解析执行代码用。执行上下文中记录了Scope,VO|AO,this原创 2021-01-23 23:08:33 · 1550 阅读 · 7 评论 -
强大的shelljs以及其中的rsync
shelljs着实强大,已经基本跟原生shell差不多了。以下内容整理自网络:一、使用ShellJS提升你的开发效率(一)直接看连接:https://juejin.im/post/5cdb76166fb9a032196ef1ff或者:https://blog.csdn.net/weixin_33980459/article/details/91422235或者看官网:http://documentup.com/shelljs/shelljs二、rsync基本命令和..原创 2020-11-23 16:37:23 · 526 阅读 · 0 评论 -
Object.defineProperty和Reflect.defineProperty的区别
Object.defineProperty和Reflect.defineProperty都是可以从底层修改一个对象的元属性的,Reflect.defineProperty将逐步的会取代Object.defineProperty,二者的基本用法是一致的。其中很大的一个区别是:Object.defineProperty的返回值是设置的对象;而Reflect.defineProperty的返回值是boolean,表示设置属性是否成功。撸代码看看:// 测试一下definePropertyfun原创 2020-07-08 13:36:16 · 1095 阅读 · 0 评论 -
图解JavaScript中的async generator函数执行顺序
ES6中的async generator函数很好用,在处理一些列的异步调用管理上很方便。可以方便的处理异步函数,可以用来管理异步的、序列的异步工作流。但是执行的顺序确实有点绕,脑子不太好使,端午节期间花了一天的时间来彻底梳理了一下。注意,看这篇文章前,最好要先了解generator函数的运行机制和基本的使用。这篇文章不做阐述。直接撸代码一、generator函数中,直接使用yield返回// 模拟一个异步函数function mockFetch(url, ms){ log(原创 2020-06-26 20:59:50 · 540 阅读 · 0 评论 -
ES6中的generator函数的应用简介
ES6中的generator函数的应用简介这里先留一个坑哈,方便其他文档链接过来。该文章计划主要写generator函数的使用场景。原创 2020-06-26 11:55:11 · 254 阅读 · 0 评论 -
JavaScript中的函数分类和讲解:普通函数(含对象的方法)、generator函数、async函数、async generator函数使用讲解
在ES6之前,JS中主要只有一种函数,ES6之后,加入了其他的一些函数,方便了很多其他场景的处理,尤其是异步场景的处理,用的合适,能大大的简化异步代码的处理。一、普通函数:这里所说的普通函数,包含普通函数、函数表达式定义的函数、对象中的方法,箭头函数等。普通函数是比较常见、常用的,这里描述一下涉及的调用方式:// 1.1, 直接函数调用方式:Person("迪丽热巴", 18, "直接函数调用");// 1.2, 方法调用obj.doSomeThing()// 2, 构造函数方式原创 2020-06-26 11:51:10 · 440 阅读 · 0 评论 -
用ES6的新特性实现斐波那契数列
斐波那契数列是每一门语言必讲的一个简单又经典的算法题,用ES6的新特性来实现,简单、清晰数列从第3项开始,每一项都等于前两项之和,比如:1、1、2、3、5、8、13、21、34直接撸代码:方案1,解构赋值的方式:function fib1(num){ let rst = []; let [pre, current] = [0,1]; if(num>=3){ for(let i=0; i<num; i++){ rs.原创 2020-06-01 22:47:30 · 482 阅读 · 0 评论 -
JavaScript中函数调用方式小结
新冠疫情的五一假期,没有出去浪,在家把JS基础温故一下,小结一下目前我遇到的JS函数的调用方式。可能有遗漏的,但是应该比较全了。我进行了一下分类,一共分了约几大类:1,构造函数调用(2种)2,直接调用(1种)3,通过call, apply等方式调用(4种)4,通过bind调用(1种)5,自执行函数直接调用(严格上说,不算一种调用方式),这个不举例了老样子,直接撸代码...原创 2020-05-05 16:25:23 · 248 阅读 · 0 评论