javascript
javascript开发笔记,完结
读心悦
想做全栈!!!
展开
-
JavaScript:移除元素
这是原题:给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。返回 k。原地移除,意味着不能定义新的变量。原创 2024-07-17 23:55:31 · 289 阅读 · 0 评论 -
ECMAScript和JavaScript的区别
ECMAScript规范的每个版本都定义了新的语言特性和改进,这些特性和改进随后被JavaScript和其他基于ECMAScript的语言实现。总结:ECMAScript是一个脚本语言的标准和规范,而JavaScript是这个标准的一种具体实现。JavaScript:它是ECMAScript规范的一种实现,但它也包含了一些其他的功能和特性,如DOM操作、事件处理、异步编程等。ECMAScript:规范定义了语言的语法和功能,但具体的实现和扩展由不同的JavaScript实现决定。原创 2024-04-29 23:11:19 · 263 阅读 · 2 评论 -
《JavaScript百炼成仙》,简单但是挺有效的
《JavaScript百炼成仙》是一本以玄幻小说的形式,来讲述JavaScript的知识。此篇仅仅是我快速阅读《JavaScript百炼成仙》这本书的笔记,流水账笔记,望君一阅!小说的主角为叶小凡【叶小凡,这个名字有点熟悉,也就是玄幻小说中常见主角的名字】,叶小凡是乐阳村中唯一一个具备修行JavaScript的甲等资质的孩子,于是就被送到千鹤派修炼JavaScript。原创 2023-02-19 21:40:23 · 2435 阅读 · 0 评论 -
工作者线程
JavaScript是单线程的,就不能像多线程一样把工作委托给独立的线程。工作者线程的价值就是允许把主线程的工作转嫁到独立的实体,而不会改变现有的单线程模型。JavaScript环境实际上是运行在托管操作系统中的虚拟环境。在浏览器中打开一个页面,就会分配一个自己的环境,这样每一个页面都有自己的内存、事件循环、DOM等等。每一个页面相当于一个沙盒,不会干扰其他的页面。使用工作者线程,浏览器可以在原始页面环境之外再分配一个完全独立的二级子环境,这个子环境不能和依赖单线程交互的API互操作。原创 2022-12-11 17:35:50 · 213 阅读 · 0 评论 -
不可变数据的制造艺术:Immutable的应用
这个“不可变数据”并不是不能修改,它是是指一旦生成就不能再修改的数据,这类数据的修改操作会返回一个新的数据,而原来的数据结构保存的内容不会发生变化。在获取不可变数据的时候,就不得不说克隆了,克隆有两种方式:深克隆和浅克隆。原创 2022-08-24 14:57:06 · 318 阅读 · 0 评论 -
Lodash工具库使用
块,就是把数组拆分为多个数组。接受两个参数:数组和每个子数组的长度,例如:以上代码中,是将数组拆分为长度为4的子数组。官方说是创建一个新数组,其实我觉得说成对数组的筛选,比较合适一些。因为compact方法创建的新数组,就是从原数组中取出为真的元素,组合成新数组。功能和数组的filter方法一样:difference从原数组中取出不属于另一个数组的元素,组合成新数组。drop切片,从数组的首位开始去掉几个元素,这篇博客仅仅记录最近使用的这个方法。还有很多的方法,在开发过程中,根据需要,我们再到官原创 2022-08-06 22:37:28 · 435 阅读 · 0 评论 -
JavaScript数组随机排序
前面已经总结了几种常见的数组排序方法:冒泡排序,选择排序等等。今天总结一下随机排序,每执行一次函数,对数组进行一次随机性的排序:代码如下:思路:在遍历数组的时候,根据数组的下标来获取一个随机数,该随机数作为随机交换的数组元素下标,再拿当前元素和该随机项交换,从而完成数组的随机排序交换函数:...原创 2022-06-09 22:44:28 · 448 阅读 · 1 评论 -
JavaScript异步编程Promise
再次梳理一下同步和异步的区别:同步:在执行一段代码,没有返回结果之前,则不执行后面的代码。会阻塞后面代码的执行。异步:与同步执行相反,在执行执行一段代码没有返回结果时,通过一个回调函数来处理这个结果,继续执行后面的代码。在ES6中,用Promise对象来表示异步的最终完成和结果。Promise以下三个状态:待定(pending): 初始状态。已兑现(fulfilled): 意味着操作成功完成。已拒绝(rejected): 意味着操作失败。pending状态要么转化为fulfilled,要么转原创 2022-03-11 15:19:42 · 910 阅读 · 0 评论 -
JavaScript数组扁平化
数组扁平化就是将数组元素和子数组元素合并成新数组并且返回。遍历递归遍历数组,并且判断子元素是否是一个数组:var a = [1, [54, [43, 42, 5]]];function flatten(arr) { let result = []; for (let i = 0; i < arr.length; i++) { if (Array.isArray(arr[i])) { result = result.concat(flat原创 2022-03-11 16:31:11 · 1040 阅读 · 0 评论 -
JavaScript的函数
箭头函数箭头函数没有单独的this、arguments、super,并且不能作为构造函数。虽然箭头函数没有创建自己的this,但是它会在自己的作用域链上继承this,不能修改this的指向,所以在call和apply调用时,只能传参数,不能绑定this。function Duxin(){ this.name='duxin'; setInterval(()=>{ console.log(this.name) },1000)}箭头函数没有prototy原创 2022-03-03 00:34:05 · 800 阅读 · 0 评论 -
Typescript的数组
数组类型在Typescript编程中,给数组定义类型分为两种:简便数组类型和泛型数组类型简便数组类型:使用"[]"来定义是数组类型,例如:const arr:number[] = [1,2,3][]前面的number表示是数组的元素是number,那么这个数组的元素就不能为string。如果数组的元素有多个类型的话,那么就设置为复合类型:const arr:(number|string)[] = ["21",43]泛型数组类型:使用泛型来表示数组:Array<number>原创 2022-05-10 23:27:20 · 3429 阅读 · 0 评论 -
webpack配置typescript的代码片段
/*@Author: yongyuan253015@gmail.com@Date: 2022-01-09 22:44:27@LastEditors: Please set LastEditors@LastEditTime: 2022-01-09 22:59:33@Description: 文件描述*/const path = require(‘path’);module.exports ={entry: ‘./main.ts’,output:{filename: ‘text.js’,原创 2022-01-12 23:00:21 · 229 阅读 · 0 评论 -
JavaScript的Class
classclass,用来声明一个类,也可以说是定义一个对象,这个对象可以被继承:class Form { pubilcCount = 10; // 原型属性 constructor(name, num) { // 实例属性 this.name = name; this.num = num; } getInfo() { return { name: this.name,原创 2022-02-08 23:29:04 · 465 阅读 · 0 评论 -
JavaScript的对象总汇
文章目录创建对象字面量Object构造函数自定义构造函数JavaScript内置的对象构造函数NumberStringBooleanObjectArrayFunctionDateRegExpError创建对象字面量对象是键值对的集合,那么我们在声明一个对象的时候,可以通过字面量的形式来声明对象:const valueObject = { name: 908 }console.log('valueObject', valueObject)console.log(typeof valueObject原创 2022-05-21 19:07:02 · 277 阅读 · 0 评论 -
封装一个函数,实现获取一个范围内的几个数,并且排序【getRandomArray】
这个函数的功能:动态设置范围值动态设置数组的长度function getRandomAyy(max,min,length){}通过Math.random()方法来获取一个随机数,然而Math.random()方法默认是返回0到1的随机数,是一个浮点数,原创 2022-05-06 21:52:54 · 403 阅读 · 0 评论 -
http状态码表
2开头 (请求成功)表示成功处理了请求的状态代码。200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。201 (已创建) 请求成功并且服务器创建了新的资源。202 (已接受) 服务器已接受请求,但尚未处理。203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。204 (无内容) 服务器成功处理了请求,但没有返回任何内容。205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。206 (部分内容)转载 2022-04-20 13:36:30 · 388 阅读 · 0 评论 -
JavaScript的Object
Object.prototype.constructor所有的对象都会从原型上继承一个constructor属性,Object.prototype.constructor返回实例对象的构造函数的引用。Object.assign()完成对象的复制【浅拷贝】const targetObj = Object.assign({}, userInfo)console.log("targetObj", targetObj)Object.create()创建一个新的对象,可以传入现有的对象的属性,作为新对原创 2022-03-04 11:20:38 · 250 阅读 · 0 评论 -
JavaScript在指定区间中生成有序的数组【React组件】
给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)的数组。原始的思路是,通过for循环来生成一个数组:const createArray = (low, high) => { let arr = []; for (let index = low; index <= high; index++) { if (index % 2 !== 0) { arr.push(index) } } return arr原创 2022-02-14 00:20:48 · 648 阅读 · 0 评论 -
Javascript的Set和Map数据结构
SetSet是ES6引入新的数据结构,类似数组,但是它的元素成员是唯一的,Set本身是一个构造函数,可以直接用来生成一个Set数据结构:const set = new Set(9);因为它的每一个元素都是唯一的,那就可以给数组去重:const arr = new Set([1,2,3,3,4,4,5]);当然,去重后,返回的是一个Set结构的值,需要用Array.from()转化,才能得到我们想要的数组。Set属性和方法构造函数,默认就是Set函数size,返回Set实例的成员的数量原创 2022-02-02 23:24:05 · 1286 阅读 · 0 评论 -
BigInt类型数值
BigIntJavaScript现在支持了两种数值类型:Number和BigInt类型。所以JavaScript就有了7种原始数据类型:UndefinedNullBooleanStringSymbolNumberBigInt在JavaScript中,使用双精度64位浮点数格式来表示Number类型的值,Number类型能够安全表示的最大整数为2^53-1。BigInt类型就是能够表示任意精度的整数。创建BigInt类型的两种方式:使用BigInt字面量;使用BigInt()函原创 2022-01-16 23:30:55 · 1021 阅读 · 0 评论 -
JavaScript、canvas的缓动
缓动速度和距离成正比,离目标越近,速度就越慢:v = l * k,l表示距离,k是运动的比例系数。定义一个运动的比例系数,大于0,小于1;明确目标点;确定物体和目标之间的距离;计算速度,速度=比例系数*距离;用当前位置加上速度计算出的新位置;现在来定义运动比例系数 用easing表示:let easing = 0.05;确立终点,也就是目标,这里就直接用canvas的中心位置了:let targetX = canvas.width / 2;let targetY原创 2022-01-06 22:45:39 · 535 阅读 · 0 评论 -
JavaScript、canvas小球加速和减速运动
效果如下图:整个正方形的边长为400,这里设置小球的位置在(400,100),初始位置在正方形的右边,设置加速度为-1。声明小球的类:function Ball(radius, color) { this.radius = radius || 10; this.color = color || "red"; this.x = 0; this.y = 0; this.rotation = 0; this.scaleX = 1; this.scale原创 2022-01-04 21:59:36 · 931 阅读 · 0 评论 -
HTML、JavaScript的DOM
DOM文档对象模型每一个HTML文档都被组织成为一个树状结构,每一个HTML文档对应一个树状结构。DOM数的每一个内容称为节点,节点分为document节点、属性节点和文本节点、注释节点。节点类型节点类型常量常量值document节点DOCUMENT_NODE9元素节点ELEMENT_NODE1属性节点ATTRIBUTE_NODE2文本节点TEXT_NODE3注释节点COMMENT_NODE8document节点在最顶层,doc.原创 2021-12-26 00:17:35 · 308 阅读 · 0 评论 -
JavaScript——字符串
在JavaScript中,字符串是单引号或者双引号括起来的一组由16位Unicode字符组合的字符序列。操作字符charAt():按位置返回字符。chartCodeAt():按位置返回对应字符的Unicode编码。fromCharCode():和chartCodeAt相反,根据Unicode返回对应字符。fromCharCode()是静态方法,需要通过String来调用。indexOf()和lastIndexOf()indexOf():从左往右搜索字符串,返回第一次出现字符串的索引值,找不到.原创 2021-12-23 23:03:24 · 562 阅读 · 0 评论 -
JavaScript的Math对象
JavaScript中的Math对象,用于执行数学计算。Math属性包含了标准的数学常量,就像圆周率常量PIMath方法分为几何和算术运算两类函数。方法作用sin(x)正弦值cos(x)余弦值tan(x)正切值acos(x)反余弦值asin(x)反正弦值atan(x)反正切值abs(x)绝对值ceil(x)大于等于x的最小整数exp(x)e的x次幂floor(x)返回小于等于x的最大整数log(x.原创 2021-12-22 22:14:30 · 487 阅读 · 0 评论 -
《JavaScript高级程序设计》——变量
数据类型变量包含了两种不同类型的数据:基本数据类型和引用数据类型。基本数据类型就是最简单的数据,如:Undefined、Null、boolean、number、string和Symbol。保存基本数据类型的变量,是按照值来访问的【也就是通过value来访问】,我们操作的就是存储在内存中的实际值。引用数据类型,是存储在内存中的对象,JavaScript不允许直接访问内存位置,所以也就不能直接操作对象所在的空间。当我们在操作对象的时候,实际上是在操作这个对象的引用,并不是这个对象的本身。类型判断基本.原创 2021-10-26 23:43:20 · 116 阅读 · 0 评论 -
==运算符,也是想不到的难点
我一直认为 == 在判断两个变量是否相等的时候,仅仅是判断两个变量的字面量而已。其实,== 运算符在判断时候,它不区分变量的数据类型,也会做一些隐式类型转换。也就是两边的数据类型不同的时候,例如:一边为null或者undefined,另一边只有为null或者undefined的时候,才返回 true,否则返回false;null == undefined; // true"" == null; // false如果比较的是string和number类型,那么会自动将string转化为n原创 2021-10-21 19:41:57 · 141 阅读 · 0 评论 -
JavaScript最后一篇关于数组的总汇
之前写了几篇关于数组的笔记,很零散,所以现在想总结一下,比较完成总汇目录吧!数组的构造函数有几种哪些是改变数组自身的方法哪些是不改变自身的方法数组遍历有哪些方法数组构造器1. ArrayArray用来创建一个新的数组,当然,我们也可以使用字面量的方式来定义数组,比如:const arr = []等价于const arr = Array()但是,如果我们要定义一个有长度的数组,例如数组长度为10,这样使用字面量的方式定义新的数组就有点吃力了。那么直接使用Array()构造.原创 2021-09-16 11:12:24 · 111 阅读 · 0 评论 -
JavaScript的reduce函数的一个疑惑
一直以为reduce方法,可以传一个回调函数作为参数,而忽略了可选参数initialValue。initialValueinitialValue作为reduce首次调用callback时的第一个参数。callback的参数为:arr.reduce((prv,cur,index,arr)=>{ })pre:上次调用回调函数的累加的数值;cur:本次调用回调函数时的当前项;index:当前项的下标【可选】arr:数组【可选】那么首次调用会...原创 2021-09-13 23:03:00 · 243 阅读 · 0 评论 -
JavaScript的可选链、空值合并等运算符
可选链【?.】允许读取对象深层次的属性的值。const obj = { info: { name: "duxin", money: 1000 }}const testObj = obj?.info?.age;if (testObj) { console.log(testObj);}空值合并运算符【??】当左侧操作数为null或者undefined时,返回右侧操作数,否则返回左侧操作数。const variable = undefi原创 2021-09-09 11:30:57 · 79 阅读 · 0 评论 -
JavaScript的深拷贝和浅拷贝
浅拷贝浅拷贝:简单拷贝对象的最外层属性,对于对象更深层次的对象属性不做处理,那就会导致拷贝的对象和原始对象的深层次属性指向的是同一块内存。如果一个对象改变了这个内存的地址,那么会影响到另一个对象。把一个对象序列化成JSON字符串,再通过JSON.parse()方法将字符串生成一个新的对象,实现深拷贝。object.assign()该方法可以进行浅拷贝,语法:Object.assign(target,...sources)但是object.assign():1、不拷贝对象的继承属性2、不拷贝原创 2021-09-01 23:24:37 · 128 阅读 · 0 评论 -
JavaScript的函数提升和变量提升
在JavaScript中会存在一些这样的现象:一个变量在声明之前就可以访问而没有抛出异常,一个函数在声明之前就调用了,也没有抛出异常。这就涉及到变量或者函数提升!作用域全局作用域、函数作用域和块作用域。如果变量定在全局作用域中,那么在审核位置都可以访问该变量;如果变量定义在函数作用域内,那么只能在该函数内访问变量;同理,定义在一个代码块中的变量,也就只能在该代码块中访问变量;块级作用需要使用特定的let或者const关键字定义变量。变量提升变量声明会被提升到函数的顶部位置,但是赋值并未提升原创 2021-08-31 22:42:01 · 148 阅读 · 0 评论 -
JavaScript的this
创建一个构造函数的时候,需要使用new操作符,函数执行结束后,函数体的this就指向该实例。在JavaScript中,this的指向是随着宿主环境的变化而变化的,在不同的地方调用,返回的可能不是同一个结果。在JavaScript中,this指向的永远是函数的调用者。标题this指向全局对象当函数没有所属对象而直接调用时,this指向全局对象,如以下代码:<!DOCTYPE html><html lang="en"><head> <meta ch原创 2021-08-30 23:27:50 · 79 阅读 · 0 评论 -
leetCode:JavaScript栈实现队列
/* * @Author: yongyuan253015@gmail.com * @Date: 2021-08-22 13:57:28 * @LastEditors: Please set LastEditors * @LastEditTime: 2021-08-22 14:28:01 * @Description: 用栈实现队列 */var MyQueue = function () { this.items = []; this.outStack =[]}MyQueu原创 2021-08-22 14:29:09 · 124 阅读 · 0 评论 -
JavaScript类声明队列【源码】
/* * @Author: yongyuan253015@gmail.com * @Date: 2021-08-19 22:02:12 * @LastEditors: Please set LastEditors * @LastEditTime: 2021-08-19 23:19:21 * @Description: 类声明队列【先进先出】 */class Queue { constructor() { this.count = 0;// 队列大小 th原创 2021-08-19 23:30:01 · 167 阅读 · 0 评论 -
leetCode题目:比较含退格的字符串
创建两个数组arr和arr2,分别接收字符串1和字符串2分解后的字符分别遍历两个字符串,扫描每位置的字符,判断该字符是否是退格字符"#",若是则数组弹出最后一个元素,否则添加该元素。【也可以理解为栈,符合条件的字符入栈,否则出栈】var backspaceCompare = function (s, t) { let arr = []; let arr2 = []; for (const key in s) { if (s.charAt(key) === "#")原创 2021-08-18 23:42:46 · 129 阅读 · 0 评论 -
JavaScript类声明栈
/* * @Author: yongyuan253015@gmail.com * @Date: 2021-08-17 22:28:23 * @LastEditors: Please set LastEditors * @LastEditTime: 2021-08-17 22:52:58 * @Description: 类表示栈 */class Stack { constructor() { this.items = []; } push(element原创 2021-08-17 22:56:29 · 160 阅读 · 0 评论 -
JavaScript实现数据结构——集合的三种方式
函数方式/* * @Author: yongyuan at <yongyuan253015@gmail.com> * @Date: 2021-08-01 22:59:12 * @LastEditTime: 2021-08-01 23:39:16 * @LastEditors: yongyuan at <yongyuan253015@gmail.com> * @Description: 函数实现集合 * @FilePath: \JavaScript\collection\原创 2021-08-03 23:57:06 · 396 阅读 · 1 评论 -
function方式实现集合【源码】
/* * @Author: yongyuan at <yongyuan253015@gmail.com> * @Date: 2021-08-01 22:59:12 * @LastEditTime: 2021-08-01 23:39:16 * @LastEditors: yongyuan at <yongyuan253015@gmail.com> * @Description: 函数实现集合 * @FilePath: \JavaScript\collection\colle原创 2021-08-01 23:42:18 · 182 阅读 · 0 评论 -
ES5声明集合实例
大家都知道,数据结构里的有一种结构——集合,是一种不允许值重复的顺序数据机构。ES6中提供了一个新特性set,类似数组,但是它的成员值都是唯一的。其实在ES6之前版本中也是可以创建set结构的,那就是集合:/* * @Author: yongyuan at <yongyuan253015@gmail.com> * @Date: 2021-07-30 23:21:43 * @LastEditTime: 2021-07-31 12:04:06 * @LastEditors: yongyua原创 2021-07-31 12:07:00 · 251 阅读 · 0 评论