JavaScript常用小知识
JavaScript常用小知识 一.Number.MAX_SAFE_INTEGER 在 JavaScript 中,Number.MAX_SAFE_INTEGER 是一个常量,表示 JavaScript 中能够安全表示的最大整数值,其值为 9007199254740991。这是因为 JavaScript 的数字是基于 IEEE 754 双精度浮点数(64 位),安全整数范围是从 −253+1-2^{53} + 1−253+1 到 253−12^{53} - 1253−1。超出这个范围的整数可能会导致精度丢失。 1let minDiff = Number.MAX_SAFE_INTEGER; 总结 通过使用 Number.MAX_SAFE_INTEGER 初始化变量,开发者确保了在后续比较中,所有合法的差值都会比初始值小,从而正确更新 minDiff。 二.解构赋值 1. 解构赋值基础解构赋值是一种从数组或对象中提取值,并将其赋值给变量的语法。 数组的解构赋值123let arr = [1, 2, 3];let [a, b] = arr;console.log(a, b); //...
Map
MapMap 是 JavaScript 中的一种新型数据结构,它存储键值对(key-value pairs),与对象类似,但具有更多的特性和更高的灵活性。Map 是 ES6 引入的,它的键可以是任何数据类型,而对象的键只能是字符串或符号(虽然它们会被自动转换为字符串)。以下是 Map 的详细用法及其相关知识点: 1. 创建 Map你可以使用 new Map() 来创建一个空的 Map 实例,或者传入一个二维数组来初始化它。 123456789// 创建一个空的 Mapconst map1 = new Map();// 创建并初始化 Mapconst map2 = new Map([ ['name', 'John'], ['age', 30], ['country', 'USA']]); 2. Map 常用方法2.1 set(key, value)set 方法用于将一个键值对添加到 Map 中。如果键已存在,则更新该键的值。 1234const map = new...
Math
Math基础概述Math 是 JavaScript 的内置对象,提供数学常数和函数。Math 不像其他对象那样可以构造实例,它是全局对象,所有方法直接通过 Math 调用。 常用的数学常量 Math.PI表示圆周率(π)。值: 3.141592653589793 1console.log(Math.PI); // 3.141592653589793 Math.E表示自然对数的底数(e)。值: 2.718281828459045 1console.log(Math.E); // 2.718281828459045 Math.LN2表示 2 的自然对数。值: 0.6931471805599453 Math.LN10表示 10 的自然对数。值: 2.302585092994046 Math.LOG2E表示以 2 为底的 e 的对数。值: 1.4426950408889634 Math.LOG10E表示以 10 为底的 e 的对数。值: 0.4342944819032518 Math.SQRT2表示 2 的平方根。值:...
Promise
Promise Promise 概述Promise 是 JavaScript 中用于处理异步操作的对象,它代表了一个未来某个事件(通常是一个异步操作)最终完成或失败的状态。通过使用 Promise,可以优化回调函数的嵌套结构,使异步流程更加清晰和可维护,并提供了错误处理机制。 1. 基本概念定义 Promise 是一个表示未来某个事件(通常是一个异步操作)最终完成或失败的对象。 特点 状态:一旦状态改变,就不会再变。Promise 对象的状态有以下三种: Pending(待定):初始状态,既未完成也未失败。 Fulfilled(已完成):操作成功完成。 Rejected(已失败):操作失败。 状态只能从 pending 变为 fulfilled 或 rejected。 核心作用 优化回调函数的嵌套结构:避免“回调地狱”问题。 使异步流程更清晰和可维护:通过链式调用实现异步代码的顺序执行。 提供错误处理机制:统一管理异步操作中的错误。 2. Promise 的语法2.1 创建一个 Promise1234567const promise = new...
this
1.this在 JavaScript 中,数组是对象,所有对象都从它们的原型继承属性和方法。原型是一种用作创建其他对象基础的“模板对象”。 内置的 push() 方法,它可以将新的项添加到数组的末尾并返回新的长度。这个方法是 Array 原型的一部分,对 JavaScript 中的所有数组都可用. 12console.log(Array.prototype.hasOwnProperty('push')); // 这将返回 true,因为数组有 push 方法arr.push(4); // 现在 arr 是 [1, 2, 3, 4] 现在,如果你想向所有数组添加一个新的方法,例如 last(),你可以将它添加到 Array 原型中: 123Array.prototype.last = function() { // 这里放置 last 方法的实现}; 扩展内置原型,如 Array 的原型,可能会有潜在风险,因为如果你的方法名称与未来的 JavaScript 更新或其他库的方法名称冲突,可能会导致意想不到的行为。例如,考虑尝试覆盖...
二叉树
二叉树二叉树的定义:123456789/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } *//** 二叉树的直径 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 1234567891011121314151617181920212223242526/** * Definition for a binary tree node. * function TreeNode(val, left,...
哈希
哈希表594. 最长和谐子序列 和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。 给你一个整数数组 nums ,请你在所有可能的 子序列 中找到最长的和谐子序列的长度。 数组的 子序列 是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。 123456789101112131415161718192021/** * @param {number[]} nums * @return {number} */var findLHS = function(nums) { let newmap = new Map() for(let i=0;i<nums.length;i++){ if(newmap.has(nums[i])){ newmap.set(nums[i],newmap.get(nums[i])+1) }else{ ...
图论
图论 岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 1234567891011121314151617181920212223242526272829/** * @param {character[][]} grid * @return {number} */var numIslands = function(grid) { const weight = grid[0].length const height = grid.length const dfs = (x,y)=>{ if(x<0||y<0||x>=height||y>=weight||grid[x][y]!=='1'){ ...
数组
一.数组1. 添加和删除元素的方法1.1 push 功能:在数组末尾添加一个或多个元素。 返回值:新数组的长度。 示例: 12const arr = [1, 2, 3];arr.push(4, 5); // [1, 2, 3, 4, 5] 1.2 pop 功能:删除数组末尾的一个元素。 返回值:被删除的元素。 示例: 12const arr = [1, 2, 3];const removed = arr.pop(); // [1, 2], removed = 3 1.3 unshift 功能:在数组开头添加一个或多个元素。 返回值:新数组的长度。 示例: 12const arr = [2, 3];arr.unshift(0, 1); // [0, 1, 2, 3] 1.4 shift 功能:删除数组开头的一个元素。 返回值:被删除的元素。 示例: 12const arr = [1, 2, 3];const removed = arr.shift(); // [2, 3], removed = 1 1.5...
http协议
http协议HTTP(超文本传输协议)是用于传输网页和其他资源的协议。以下是 HTTP 协议的主要知识点: 1. HTTP 基本概念 定义:HTTP 是一个应用层协议,定义了客户端(如浏览器)和服务器之间的通信规则,用于传输超文本(如 HTML)。 无状态:HTTP 协议本身是无状态的,这意味着每个请求都是独立的,服务器不保留任何关于客户端的状态信息。 请求-响应模型:客户端发送请求,服务器处理请求并返回响应。 2. HTTP 方法 GET:从服务器请求指定的资源。它是无副作用的,只用于获取数据,不会修改服务器上的资源。 POST:向服务器提交数据,通常用于提交表单或上传文件,会在服务器上创建或修改资源。 PUT:将数据上传到服务器,通常用于更新现有资源。 DELETE:从服务器删除指定的资源。 HEAD:类似于 GET 请求,但服务器只返回响应头,不返回实体内容。通常用于获取元数据。 OPTIONS:用于查询支持的 HTTP 方法,服务器返回允许的操作方法。 PATCH:对资源进行部分修改。 3. HTTP 请求报文 请求行 :包含 HTTP 方法、请求目标(URL)和...