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。超出这个范围的整数可能会导致精度丢失。
1 | let minDiff = Number.MAX_SAFE_INTEGER; |
总结
通过使用 Number.MAX_SAFE_INTEGER
初始化变量,开发者确保了在后续比较中,所有合法的差值都会比初始值小,从而正确更新 minDiff
。
二.解构赋值
1. 解构赋值基础
解构赋值是一种从数组或对象中提取值,并将其赋值给变量的语法。
数组的解构赋值
1 | let arr = [1, 2, 3]; |
- 作用:将数组
arr
的第一个元素赋值给a
,第二个元素赋值给b
。
2. 同时赋值与交换变量
在 JavaScript 中,通过解构赋值可以实现多个变量的同时赋值或交换值。
交换两个变量的值
传统方法:
1 | let a = 1, b = 2; |
使用解构赋值:
1 | let a = 1, b = 2; |
优点:
- 更简洁。
- 不需要额外的临时变量。
4. 注意事项
- 语法要求:
- 适用于
ES6
及以上版本。 - 只能用于数组或对象的赋值操作。
- 适用于
- 不可变性问题:
- 解构赋值直接修改了数组原本的值,需注意副作用。
三、JavaScript 全局对象和方法
JavaScript 提供了一些全局对象和方法,这些方法不属于任何特定的模块或类,可以直接在任何地方调用。它们通常用于执行通用任务,例如类型转换、编码、解码和错误处理。
1. 全局对象的定义
全局对象是 JavaScript 运行时环境中默认可用的对象,允许直接访问而无需引入或定义。例如:
- 浏览器环境中的全局对象是
window
。 - Node.js 环境中的全局对象是
global
。
全局对象中包含的常用全局方法有:parseInt
、parseFloat
、isNaN
等。
2. 常见全局方法分类
(1)类型转换方法
这些方法用于将数据从一种类型转换为另一种类型。
方法 | 描述 |
---|---|
parseInt | 将字符串解析为整数,支持进制指定。 |
parseFloat | 将字符串解析为浮点数。 |
Number | 将字符串或其他值转换为数字类型,但不支持进制。 |
String | 将数字、布尔值或对象转换为字符串。 |
Boolean | 将值转换为布尔值(true 或 false )。 |
BigInt | 将数字或字符串转换为 BigInt 类型(支持大数操作)。 |
(2)检查数据有效性的方法
这些方法用于检查数据的有效性,例如是否是数字或是否有限。
方法 | 描述 |
---|---|
isNaN | 检查值是否为 NaN (非数字)。 |
isFinite | 检查值是否为有限数(非 Infinity )。 |
(3)编码与解码方法
这些方法用于编码和解码 URL 和 Base64 字符串。
方法 | 描述 |
---|---|
encodeURI | 对整个 URI 进行编码(不对保留字符编码)。 |
encodeURIComponent | 对 URI 组件进行编码(对所有字符编码,包括保留字符)。 |
decodeURI | 对整个编码的 URI 进行解码。 |
decodeURIComponent | 对编码的 URI 组件进行解码。 |
btoa | 将字符串编码为 Base64(浏览器专用)。 |
atob | 将 Base64 解码为字符串(浏览器专用)。 |
(4)错误处理方法
这些方法用于抛出和捕获错误。
方法 | 描述 |
---|---|
eval | 解释并执行 JavaScript 代码字符串(不推荐使用)。 |
throw | 手动抛出错误。 |
try...catch | 捕获运行时错误。 |
(5)全局范围相关方法
这些方法用于全局范围的操作。
方法 | 描述 |
---|---|
globalThis | 提供一个跨环境的全局对象(如 window 、global 等)。 |
3. 重点全局方法的使用示例
(1)parseInt
解析字符串为整数,支持指定进制:
1 | console.log(parseInt("101", 2)); // 输出:5(二进制) |
(2)parseFloat
解析字符串为浮点数:
1 | console.log(parseFloat("3.14")); // 输出:3.14 |
(3)isNaN
和 isFinite
检查数据有效性:
1 | console.log(isNaN("abc")); // 输出:true(非数字) |
(4)encodeURI
和 decodeURI
对 URI 进行编码和解码:
1 | const uri = "https://example.com/page?name=张三"; |
(5)btoa
和 atob
Base64 编码与解码(仅在浏览器环境可用):
1 | const str = "Hello World!"; |
4. 特别说明:注意事项
- 全局方法的安全性:
eval
存在安全性风险,不推荐使用。- 对于用户输入的数据,使用
parseInt
和parseFloat
时要注意验证合法性。
- 跨环境差异:
- 部分全局方法(如
btoa
和atob
)在 Node.js 环境中不可用,需使用Buffer
替代。
- 部分全局方法(如
- 进制转换小心陷阱:
- 使用
parseInt
时,如果未指定进制参数,字符串可能会被解析为十进制或八进制(旧版浏览器行为)。
- 使用
在JavaScript中,slice()
是一个数组和字符串的方法,用于返回数组或字符串的一个浅拷贝(不改变原始数组或字符串)的一部分。它接受两个参数:起始索引和结束索引(可选)。
slice的语法:
对于数组:
1 | array.slice(start, end) |
start
:可选,指定开始提取元素的位置(默认为 0)。如果是负数,表示从末尾开始计算。end
:可选,指定停止提取的位置(不包括该位置的元素)。如果未指定,默认提取到数组的末尾。如果是负数,表示从末尾开始计算。
对于字符串:
1 | string.slice(start, end) |
start
和end
的作用同数组。
示例:
对数组的使用:
1 | let arr = [1, 2, 3, 4, 5]; |
对字符串的使用:
1 | let str = "Hello, World!"; |
注意事项:
slice()
不会改变原始的数组或字符串,它返回的是一个新数组或新字符串。- 如果
start
大于end
,slice()
会返回一个空数组或空字符串。 - 如果
start
或end
超出了范围,slice()
会自动调整为数组或字符串的边界。
四,判断是否为回文数
1 | //通过位运算的方法来创建一个新的数据并且比较是不是同一个数字 // 方法一 |