我好像不会JavaScript
文章平均质量分 79
JavaScript 是 Web 的编程语言。
所有现代的 HTML 页面都使用 JavaScript。
JavaScript 非常容易学。(bu shi)
小绵杨Yancy
Trouble is a friend.
展开
-
【TypeScript】TypeScript学习 — 泛型
记住,这些类型变量代表的是任意类型,所以使用这个函数的人可能传入的是个。使用any类型会导致这个函数可以接收任何类型的arg参数,这样就丢失了一些信息:传入的类型与返回的类型应该是相同的。你应该会记得之前的一个例子,我们有时候想操作某类型的一组值,并且我们知道这组值具有什么样的属性。这样的话,identity只能接收number类型的参数,接收其他参数是会报错的。我们需要传入符合约束类型的值,必须包含必须的属性,即包含length属性的值。泛型类指的是实例部分的类型,所以类的静态属性不能使用这个泛型类型。原创 2022-11-22 20:42:25 · 265 阅读 · 0 评论 -
深入学习JS:作用域与执行上下文
2、创建作用域链:在执行期上下文的创建阶段,作用域链是在变量对象之后创建的。当被要求解析变量时,JavaScript始终从代码嵌套的最内层开始,如果最内层没有找到变量,就会跳转到上一层父作用域中查找,直到找到该变量。可以看到,在全局作用域中,无法访问函数作用域中的age变量,但是在函数作用域中却可以访问全局作用域中的country变量,因为全局变量在任何地方都可见。1、创建变量对象:首先初始化函数的参数 arguments,提升函数声明和变量声明(变量的声明提前有赖于var关键字)。)区域,即函数作用域。原创 2022-09-16 09:57:15 · 536 阅读 · 0 评论 -
【JavaScript】Generator函数
Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。Generator 函数有多种理解角度。语法上,首先可以把它理解成,Generator 函数是一个状态机,封装了多个内部状态。执行 Generator 函数会返回一个遍历器对象,也就是说,Generator 函数除了状态机,还是一个遍历器对象生成函数。返回的遍历器对象,可以依次遍历 Generator 函数内部的每一个状态。原创 2022-09-08 08:00:00 · 377 阅读 · 0 评论 -
【TypeScript】TypeScript学习 — 函数和泛型
函数是JavaScript应用程序的基础。 它帮助你实现抽象层,模拟类,信息隐藏和模块。 在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义 行为的地方。TypeScript为JavaScript函数添加了额外的功能,让我们可以更容易地使用。对于JavaScript,定义一个函数可以使用function关键字或者函数表达式,例如:此时函数的参数a,b类型是不确定的,如果你传入两个数字,那么会返回两数之和,如果传入的两个参数中包含了字符串或者两个都是字符串,那么就会返回拼接原创 2022-06-05 22:50:56 · 452 阅读 · 0 评论 -
ES6可选链操作符和空值合并运算符
目录1、?.操作符2、?? 操作符1、?.操作符ES5中我们判断一个对象是否存在一个属性并输出:let user = { name: 'yancy', age: 20}//方法一:&&let person_name = user && user.name;console.log(person_name);//方法二:三元运算符let person_name_2 = user ? (user.name ? user.name : unde原创 2022-05-10 09:31:26 · 507 阅读 · 0 评论 -
【TypeScript】TypeScript学习 — TS基本类型
目录一、基本类型1.1 变量声明1.2 变量类型1.3TypeScript联合类型二、类2.1类的定义2.2 实例化2.3 继承三、接口interface一、基本类型1.1 变量声明ts中声明变量时建议带上变量类型,语法:var [变量名] : [类型] = 值;例如:var uname : string = 'yancy';1.2 变量类型在js中,变量分为基本数据类型:Undefined、Null、Boolean、Number、String、Symbol和Bigint;引用数据类型.原创 2022-05-09 10:58:57 · 908 阅读 · 0 评论 -
【TypeScript】TypeScript学习 — TS基础及环境搭建
目录一、TypeScript二、TypeScript和JavaScript的区别三、第一个TypeScript实例3.1 全局安装typescript3.2 新建ts文件3.3 ts自动编译成js一、TypeScriptTypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准(ES6 教程)。TypeScript 由微软开发的自由和开源的编程语言。TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScrip原创 2022-05-04 19:18:01 · 287 阅读 · 0 评论 -
【JavaScript】关于[object Object]
目录1、[object Object]2、使用JSON.stringify()解决1、[object Object]什么时候会出现[object Object]呢?当我想看看一个对象,可以在控制台输出它,你或许要给它取个’名字’,ok!恭喜你,得到了[object Object]。我们再看看toString()let o = {name: 'yancy'};console.log(o);console.log(o.toString());结果:可以看到我们将一个对象转为字符串时,原创 2022-05-02 10:34:10 · 28985 阅读 · 6 评论 -
【JavsScript】call、apply和bind的区别
目录1、Function.prototype.call()2、Function.prototype.apply()3、Function.prototype.bind()4、总结1、Function.prototype.call()call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。function Product(name, price) { this.name = name; this.price = price;}function Food(nam原创 2022-05-01 11:58:09 · 262 阅读 · 0 评论 -
【JS】隐式类型转换和显示类型转换
目录一、JS数据类型1、基本数据类型2、引用类型二、隐式类型转换三、强制(显示转换)Number(value)parseInt(value, radix)parseFloat(value)四、'=='中的隐式转换一、JS数据类型1、基本数据类型Ja‘- vaScript中有七种基本数据类型(其中包括 String、Number、Boolean、Null、Undefined、Symbol、bigInt)2、引用类型三种对象(引用)类型(其中包括 Object、Date、function、RegEx.原创 2022-04-28 17:01:15 · 2934 阅读 · 0 评论 -
【JS】连续赋值问题:a.x = a = {n: 2}
完整代码:var a = {n: 1};var b = a;a.x = a = {n: 2};console.log(a.x);//undefinedconsole.log(a);console.log(b);//{n:1,x:{n:2}}console.log(a === b.x);//true1、前言我们得知道:1、“.“运算符的优先级高于”=“运算符。所以一个式子中同时存在”.“和”=“时,先运行”.”。2、"="其实是有返回值的,返回左边的值。let a = 10;原创 2022-04-04 12:00:00 · 665 阅读 · 0 评论 -
【JS】JavaScript正则表达式详细使用
目录1、描述字符范围 : [ ]2、选择匹配:|在上一篇博客中,记录了js中正则表达式的简单使用:【JS】JavaScript正则表达式基础。这篇博客学习一下JavaScript中正则表达式的详细使用。1、描述字符范围 : [ ]在正则表达式语法中,方括号表示字符范围。在方括号中可以包含多个字符,表示匹配其中任意一个字符。如果多个字符的编码顺序是连续的,可以仅指定开头和结尾字符,省略中间字符,仅使用连字符~表示。如果在方括号内添加脱字符^前缀,还可以表示范围之外的字符。例如:[abc]:查找方括号内原创 2022-04-03 11:14:44 · 1466 阅读 · 0 评论 -
【JS】JavaScript中的宏任务和微任务
目录概念宏任务微任务运行机制总结js是一门单线程语言,所以它本身是不可能异步的,但是js的宿主环境(比如浏览器、node)是多线程,宿主环境通过某种方式(事件驱动)使得js具备了异步的属性。而在js中,我们一般将所有的任务都分成两类,一种是同步任务,另外一种是异步任务。而在异步任务中,又有着更加细致的分类,那就是微任务和宏任务。概念宏任务宏任务:主代码块、setTimeout、setInterval、DOM事件、AJAX请求。浏览器为了能够使得JS内部任务与DOM任务能够有序的执行,会在一个任务原创 2022-03-30 11:26:45 · 3437 阅读 · 2 评论 -
【JS】JavaScript正则表达式基础
目录一、正则表达式二、字符串使用正则表达式三、常用例子一、正则表达式关于正则表达式,我在另一篇博客记录过:正则表达式二、字符串使用正则表达式三、常用例子原创 2022-03-29 20:28:51 · 2025 阅读 · 1 评论 -
JS算法:洗牌算法(shuffle)
目录1、洗牌算法2、JavaScript实现1、洗牌算法洗牌(随机)算法有很多应用,例如我们平时用的音乐播放器随机播放,棋牌游戏中的洗牌,扫雷游戏中雷的位置随机等等,都会用到洗牌算法。思路:从原始数组中每次随机选中一个元素,然后放入新数组中,每取出一个元素后,将将它从原数组中取出(使用splice方法),原数组长度减一。2、JavaScript实现function shuffle(array){ let res = [], random; while(array.length原创 2022-03-26 16:29:34 · 7754 阅读 · 0 评论 -
深入学习JS:任务队列和事件循环
目录一、问题二、js中的任务队列三、解决一、问题二、js中的任务队列我们知道js是单线程的:JS作为浏览器的脚本语言,主要的用途就是与用户互动,操作dom,这也是根本原因决定JS是单线程的原因。 设想一个线程在DOM上添加元素,而另一个线程删除了这个节点,那这个时候应该听谁的?三、解决...原创 2022-03-24 12:12:32 · 3139 阅读 · 9 评论 -
JS学习 — JavaScript中字符串(String)常用方法
一、基本数据类型在JavaScript中:String、Number、Boolean、Null、Undefined、Symbol(ES6新增)属于基本数据类型。基本类型是不可以通过方法改变自身的值的,所以String变量调用自身的方法后,原来的值并未改变,而是返回改变后产生的新值。二、常用方法1、charAt(索引值)查找字符串具体位置(下标)的值"yancy".charAt(2) // n2、indexOf(searchValue[,fromIndex])返回searchValue第一次原创 2022-03-23 09:23:58 · 822 阅读 · 0 评论 -
深入学习JS — 一篇文章了解JS的节流与防抖
目录1、节流2、防抖1、节流2、防抖原创 2022-03-14 16:15:35 · 1476 阅读 · 4 评论 -
深入学习JS — 原型、原型链、typeof和instanceof的理解
目录一、概念二、原型三、原型链一、概念1、所有的引用类型(数组、函数、对象)可以自由扩展属性(除null以外)。也就是说,可以使用Obj.prototype={}来添加新的属性。2、所有的引用类型都有一个’_ _ proto_ _'属性(也叫隐式原型,它是一个普通的对象)。3、所有的函数都有一个’prototype’属性(这也叫显式原型,它也是一个普通的对象)。4、所有引用类型,它的’_ _ proto_ _'属性指向它的构造函数的’prototype’属性。5、当试图得到一个对象的属性原创 2022-03-12 20:39:32 · 707 阅读 · 0 评论 -
深入学习JS — js中的数组(Array)操作
一、数组原创 2022-03-12 11:31:28 · 3354 阅读 · 0 评论 -
深入学习JS — 这个this究竟指向谁啊?
一、JS中的thismdn对于this的描述:与其他语言相比,函数的 this 关键字在 JavaScript 中的表现略有不同,此外,在严格模式和非严格模式之间也会有一些差别。在绝大多数情况下,函数的调用方式决定了 this 的值(运行时绑定)。this 不能在执行期间被赋值,并且在每次函数被调用时 this 的值也可能会不同。ES5 引入了 bind 方法来设置函数的 this 值,而不用考虑函数如何被调用的。ES2015 引入了箭头函数,箭头函数不提供自身的 this 绑定(this 的值将保原创 2022-03-11 20:05:59 · 949 阅读 · 0 评论 -
深入学习JS — 异步函数和Promise对象
目录1、JS中的异步1.1 同步1.2 异步1.3 回调函数解决异步问题1.4 回调地域2、Promise对象2.1 Promise的基本使用2.2 async 和 await1、JS中的异步1.1 同步一般情况下,js的代码都是自上而下顺序运行的。例如:let res = '';res = '获取到的结果!';console.log(res);结果:很容易理解,我给res赋了新值,然后输出res。这就是js的同步执行,这里的同步,并不是一起执行的意思,而是在一个线程里顺序执行的意思。因原创 2022-03-09 16:25:43 · 1103 阅读 · 0 评论 -
深入学习JS — 回调函数(callBack)的理解(手写Array.sort())
目录1、回调函数(callback)2、Array.sort()3、手写Array.sort()1、回调函数(callback)MDN 的描述回调函数是作为参数传给另一个函数的函数,然后通过在外部函数内部调用该回调函数以完成某种操作。个人理解回调函数就是一个函数使用了另一个函数作为参数,然后在内部使用该函数,从而可以增强函数的功能,也就是根据传入门的函数,一个函数可以实现许多功能。例如接下来的Array.sort(),可以根据传入的函数参数,实现正序或者逆序排序。2、Array.sort原创 2022-03-08 23:16:32 · 881 阅读 · 0 评论 -
深入学习JS — 赋值、浅拷贝和深拷贝
目录1、数据类型1.1 数据类型分类1.2 对象分类2、赋值1、数据类型1.1 数据类型分类ECMAScript中的可以分为两大类:1、基本数据类型:名值存储在栈内存中,包括:Number、String、Boolean、Null、 Undefined。2、引用数据类型:名存在栈内存中,值存在于堆内存中,但是栈内存会提供一个引用的地址指向堆内存中的值,包括:Object(数组Array和函数function都属于Object)。深拷贝和浅拷贝的概率只存在于引用类型中,因为基本数据类型会直接把值拷贝原创 2022-03-07 22:24:09 · 554 阅读 · 0 评论