全局函数
全局函数
以下是关于 JavaScript 全局函数(Global Functions) 的详细介绍及整理表格。这些函数是 JavaScript 语言标准(ECMAScript)定义的内置函数,可以直接在全局作用域中调用,无需依赖宿主环境(如浏览器或 Node. js)。
什么是全局函数?
- 全局作用域:这些函数属于全局对象(在浏览器中是
window,在 Node. js 中是 global),可直接调用。
- 语言核心功能:用于数据转换、编码、数学运算等基础操作。
- 与宿主函数的区别:全局函数是 JavaScript 语言标准的一部分,而宿主函数(如
document.getElementById)由宿主环境提供。
JavaScript 全局函数列表
| 函数 |
描述 |
参数 |
返回值 |
注意事项 |
parseInt() |
将字符串转换为整数。 |
string(要转换的字符串)、radix(进制基数,可选,默认 10)。 |
解析后的整数或 NaN。 |
忽略字符串开头的空格,遇到非数字字符停止解析。 |
parseFloat() |
将字符串转换为浮点数。 |
string(要转换的字符串)。 |
解析后的浮点数或 NaN。 |
类似 parseInt,但支持小数点和指数形式(如 2.5e3)。 |
isNaN() |
检查值是否为 NaN(非数字)。 |
value(要检查的值)。 |
true(是 NaN)或 false。 |
先尝试将参数转换为数字,再判断。建议使用 Number.isNaN() 更严格。 |
isFinite() |
检查值是否为有限数字(非 Infinity 或 NaN)。 |
value(要检查的值)。 |
true(有限)或 false。 |
会先将参数转换为数字(如 isFinite("123") 返回 true)。 |
encodeURI() |
对 URI 进行编码,保留合法字符(如 :/?#[]@)。 |
uri(要编码的完整 URI)。 |
编码后的字符串。 |
不编码 URI 保留字符,适合编码完整 URL。 |
encodeURIComponent() |
对 URI 组件(如查询参数)进行编码,转义更多字符。 |
uriComponent(要编码的 URI 部分)。 |
编码后的字符串。 |
编码所有非标准字符(如 :/),适合编码查询参数。 |
decodeURI() |
解码由 encodeURI 编码的 URI。 |
encodedURI(已编码的 URI)。 |
解码后的原始 URI。 |
无法解码 encodeURIComponent 编码的内容(可能报错)。 |
decodeURIComponent() |
解码由 encodeURIComponent 编码的 URI 组件。 |
encodedURIComponent(已编码的 URI 部分)。 |
解码后的原始字符串。 |
可以解码 encodeURI 和 encodeURIComponent 编码的内容。 |
eval() |
执行字符串中的 JavaScript 代码。 |
string(包含代码的字符串)。 |
代码执行的返回值(若无返回则为 undefined)。 |
慎用:存在安全风险,性能差,且难以调试。 |
示例代码
1. 数值转换
1 2
| console.log(parseInt("42px")); console.log(parseFloat("3.14.5"));
|
2. URI 编码与解码
1 2 3 4 5
| const url = "https://example.com/搜索?q=JavaScript"; const encoded = encodeURI(url); const decoded = decodeURI(encoded); const param = "name=张三&age=20"; const encodedParam = encodeURIComponent(param);
|
3. 检查特殊值
1 2
| console.log(isNaN("Hello")); console.log(isFinite(Infinity));
|
4. 危险的 eval()
1 2 3
| const x = 10; eval("console.log(x + 5);"); eval("let y = 20; console.log(y);");
|
注意事项
- 避免使用
eval()
- 容易导致代码注入攻击(如动态执行用户输入)。
- 影响性能(无法被 JavaScript 引擎优化)。
- 改用
Function 构造函数或模块化方案替代。
isNaN vs Number.isNaN
isNaN("abc") → true(因为 Number("abc") 是 NaN)。
Number.isNaN("abc") → false(严格判断是否为 NaN 类型)。
- URI 编码选择
- 编码整个 URL →
encodeURI()。
- 编码查询参数 →
encodeURIComponent()。
总结
JavaScript 全局函数为开发者提供了基础的数据处理能力,但在使用时需注意兼容性和安全性(尤其是 eval)。结合现代 API(如 URLSearchParams 替代 URI 编码)和严格模式("use strict"),可以编写更安全、高效的代码。