
JS&TS
文章平均质量分 85
JavaScript与TypeScript的学习文章
码上生花
强者创造时代,能者顺应时代,弱者繁衍后代。
展开
-
Web Worker
JavaScript 语言采用的是单线程的,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。Web Worker 是一种在浏览器中实现多线程处理的技术,允许在后台线程中执行脚本,从而避免长时间运行的脚本阻塞用户界面。Web Worker 使得在一个独立于 Web 应用程序主执行线程的后台线程中运行脚本操作成为可能。这样做的好处是可以在独立线程中执行费时的处理任务,使主线程(通常是 UI 线程)的运行不会被阻塞/放慢。原创 2025-01-04 14:38:06 · 781 阅读 · 0 评论 -
TypeScript高级语法(Omit、Pick、Partial、Required、Readonly、Exclude 、Extract、ReturnType、NonNullable)
假如有一个联系人列表。原创 2024-10-08 23:47:17 · 759 阅读 · 0 评论 -
TypeScript的类型描述文件d.ts
接口和类型别名是定义自定义类型的重要工具。接口用于描述对象的形状,而类型别名用于为类型定义一个别名。x: number;y: number;我们可以使用接口或类型别名来约束对象的结构,并通过类型注解将其应用于变量、函数参数等。原创 2024-05-19 13:21:07 · 1016 阅读 · 1 评论 -
JS中bind、call与apply 区别
我们就可以使用call方法调用obj.sayHello, 并将obj.sayHello中的this修改为obj1,把 ‘设计师’, ‘画画’ 这两个参数出给obj.sayHello。区别在于传参形式不同,apply接受两个参数,第一个参数是要指向的this对象,第二个参数是一个数组,数组里面的元素会被展开传入fn,作为fn的参数。关于call、apply、bind函数,它们主要用来改变this指向的,在很多框架中常有用到,而且也是面试官喜欢问到的问题:多数会问道三者的区别, 以及手动实现它们。原创 2024-04-08 21:18:05 · 317 阅读 · 0 评论 -
JS变量声明var、let、const详解
varletconst函数级作用域块级作用域块级作用域重复声明不可重复声明不可重复声明变量提升不存在变量提升不存在变量提升值可更改值可更改值不可更改全局变量挂载到window全局变量不会挂载到window全局变量不会挂载到window不使用varconst优先,let次之i原创 2024-04-08 20:26:47 · 6256 阅读 · 0 评论 -
JS事件循环机制
JavaScript事件循环机制是JavaScript中处理异步操作的一种机制。它基于事件队列和事件循环的概念,用于管理和执行异步任务。当JavaScript代码执行时,同步任务会立即执行,而异步任务会被放入事件队列中。事件队列是一个先进先出的数据结构(队列),用于存储待执行的异步任务。事件循环是一个持续运行的过程,它会不断地从事件队列中取出任务并执行。执行同步任务:JavaScript引擎会按照代码的顺序执行同步任务。执行微任务:在同步任务执行完毕后,JavaScript引擎会检查微任务队列。原创 2024-03-27 09:26:44 · 1006 阅读 · 0 评论 -
JS之函数柯里化
在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术。原创 2024-01-17 14:45:12 · 1980 阅读 · 0 评论 -
JS中的纯函数
你可能听过一个术语叫纯函数,它是一个非常重要的概念,我们下面将来介绍它。原创 2024-01-17 12:01:07 · 1204 阅读 · 0 评论 -
JS中的函数记忆
Memoization — 函数记忆或函数缓存,是一种优化技术,用于许多编程语言中,以减少冗余、昂贵的函数调用。这是通过缓存函数的返回值来实现的。函数记忆是指将上次的计算结果缓存起来,当下次调用时,如果遇到相同的参数,就直接返回缓存中的数据// 假设 memoize 可以实现函数记忆memoizedAdd(1, 2) // 相同的参数,第二次调用时,从缓存中取出数据,而非重新计算一次。原创 2024-01-17 11:46:07 · 1725 阅读 · 0 评论 -
JS中的元编程
元编程 无异于 编程中的魔法!如果编写一个“能够读取、修改、分析、甚至生成新程序”的程序将会如何?是不是听起来很神奇、很强大?维基百科这样描述元编程:元编程 是一种编程技术,编写出来的计算机程序能够将其他程序作为数据来处理。意味着可以编写出这样的程序:它能够读取、生成、分析或者转换其它程序,甚至在运行时修改程序自身。反射 是元编程的一个分支。自省(Introspection):代码能够自我检查、访问内部属性,我们可以据此获得代码的底层信息。原创 2023-10-31 00:52:53 · 898 阅读 · 0 评论 -
JS中迭代器的介绍
迭代器(iterator),使用户在容器对象(container,例如链表或数组)上遍访的对象,使用该接口无需关心对象的内部实现细节。迭代器(iterator)是一个结构化的模式,用于从源以一次一个的方式提取数据。迭代器是一种有序的、连续的、基于拉取的用于消耗数据的组织方式。除了标准的内置迭代器,你也可以构造自己的迭代器!要使得它们能够与 ES6 的消费者工具(比如,for…of 循环以及… 运算符)互操作,所需要做的就是使其遵循适当的接口。return {// 使迭代器成为iterable。原创 2023-10-29 13:24:06 · 1791 阅读 · 0 评论 -
JS中this的绑定规则
在代码中,foo() 是直接使用不带任何修饰的函数引用进行调用的,因此只能使用默认绑定,无法应用其他规则。就像我们刚才看到的那样,在分析隐式绑定时,我们必须在一个对象内部包含一个指向函数的属性,并通过这个属性间接引用函数,从而把 this 间接(隐式)绑定到这个对象上。) 时,我们会构造一个新对象并把它绑定到 foo(…首先需要注意的是 foo() 的声明方式,及其之后是如何被当作引用属性添加到 obj 中的。它们的第一个参数是一个对象,它们会把这个对象绑定到this,接着在调用函数时指定这个 this。原创 2023-10-26 00:07:59 · 999 阅读 · 0 评论 -
JS中面向对象的程序设计
由于为对象定义多个属性的可能性很大,ECMAScript 5 又定义了一Object.defineProperties()方法。利用这个方法可以通过描述符一次定义多个属性。这个方法接收两个对象参数:第一个对象是要添加和修改其属性的对象,第二个对象的属性与第一个对象中要添加或修改的属性一一对应。原创 2023-10-24 20:08:39 · 1668 阅读 · 0 评论 -
JS中欺骗词法作用域的eval和with
的第一个参数可以是字符串,字符串的内容可以被解释为一段动态生成的函数代码。) 或 with,它只能简单地假设关于标识符位置的判断都是无效的,因为无法在词法分析阶段明确知道 eval(…) 会接收到什么代码,这些代码会如何对作用域进行修改,也无法知道传递给 with 用来创建新词法作用域的对象的内容到底是什么。) 函数的行为也很类似,最后一个参数可以接受代码字符串,并将其转化为动态生成的函数(前面的参数是这个新生成的函数的形参)。) 在运行时有其自己的词法作用域,意味着其中的声明无法修改所在的作用域。原创 2023-10-17 11:42:46 · 768 阅读 · 0 评论 -
JS的基本组成
javascript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异,IE 扩展了 BOM,加入了 ActiveXObject 类,可以通过 JavaScript 实例化 ActiveX 对象。原创 2023-09-26 18:58:02 · 847 阅读 · 0 评论 -
浏览器基本原理
js代码:对于js代码,会先判断js代码前的css有没有解析完(包括外部css的下载),如果没有则等待css代码下载完并解析完毕,然后再执行js代码。css样式:对于css代码,会根据css的样式选择器构建cssDom树,并对样式进行计算(rem,em转换为px,没有定义样式的提供默认样式),生成computedStyle。defer文件下载完,等html解析完,按加载顺序执行。html标签:对于普通的html标签,会生成Dom树(标签节点的结构树,是浏览器的内置对象,会有一些内置方法和属性)。原创 2023-09-23 16:29:03 · 1204 阅读 · 0 评论 -
JS中Symbol的介绍
symbol是一种原始数据类型其余原始类型: 未定义(undefined) 、 空值(null)、布尔值(boolean)、字符串(string)、数值(number)、对象(object)symbol表示独一无二的值symbol类型的"真实值"无法获取,也就是说Symbol类型没有对应的字面量symbol类型的意义在于区分彼此和不重复,不在于真实值。原创 2023-09-15 11:45:20 · 5764 阅读 · 1 评论 -
JS生成器的介绍
生成器是ES6中新增的一种函数控制、使用的方案,它可以让我们更加灵活的控制函数什么时候继续执行、暂停执行等。平时我们会编写很多的函数,这些函数终止的条件通常是返回值或者发生了异常。生成器函数也是一个函数,但是和普通的函数有一些区别:首先,生成器函数需要在function的后面加一个符号:*其次,生成器函数可以通过yield关键字来控制函数的执行流程最后,生成器函数的返回值是一个Generator(生成器)生成器事实上是一种特殊的迭代器。原创 2023-09-13 19:43:54 · 1735 阅读 · 1 评论 -
JS装饰器的介绍
装饰器是一种特殊类型的声明,它能够被附加到类声明,方法,访问符,属性或参数上。装饰器使用@expression这种形式,expression求值后必须为一个函数,它会在运行时被调用,被装饰的声明信息做为参数传入。原创 2023-09-08 12:59:21 · 1644 阅读 · 0 评论 -
JS资源下载的四种方法
JS资源下载的四种方法原创 2022-08-26 19:24:04 · 3486 阅读 · 0 评论 -
JS中的Promise
Promise是异步编程的一种解决方案,他是一个对象,可以获取异步操作的消息,避免了回调地狱所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。Pending(进行中)Resolved(已完成)Rejected(已拒绝)原创 2023-08-12 14:16:27 · 9627 阅读 · 0 评论