全局函数

全局函数

全局函数

以下是关于 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() 检查值是否为有限数字(非 InfinityNaN)。 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 部分)。 解码后的原始字符串。 可以解码 encodeURIencodeURIComponent 编码的内容。
eval() 执行字符串中的 JavaScript 代码。 string(包含代码的字符串)。 代码执行的返回值(若无返回则为 undefined)。 慎用:存在安全风险,性能差,且难以调试。

示例代码

1. 数值转换

1
2
console.log(parseInt("42px"));      // 42(忽略非数字部分)
console.log(parseFloat("3.14.5")); // 3.14(遇到第二个小数点停止)

2. URI 编码与解码

1
2
3
4
5
const url = "https://example.com/搜索?q=JavaScript";
const encoded = encodeURI(url); // "https://example.com/%E6%90%9C%E7%B4%A2?q=JavaScript"
const decoded = decodeURI(encoded); // 还原原始 URL
const param = "name=张三&age=20";
const encodedParam = encodeURIComponent(param); // "name%3D%E5%BC%A0%E4%B8%89%26age%3D20"

3. 检查特殊值

1
2
console.log(isNaN("Hello"));   // true(字符串转换为数字是 NaN)
console.log(isFinite(Infinity)); // false

4. 危险的 eval()

1
2
3
const x = 10;
eval("console.log(x + 5);"); // 15(可以访问当前作用域)
eval("let y = 20; console.log(y);"); // 20(但会污染作用域)

注意事项

  1. 避免使用 eval()
    • 容易导致代码注入攻击(如动态执行用户输入)。
    • 影响性能(无法被 JavaScript 引擎优化)。
    • 改用 Function 构造函数或模块化方案替代。
  2. isNaN vs Number.isNaN
    • isNaN("abc")true(因为 Number("abc")NaN)。
    • Number.isNaN("abc")false(严格判断是否为 NaN 类型)。
  3. URI 编码选择
    • 编码整个 URL → encodeURI()
    • 编码查询参数 → encodeURIComponent()

总结

JavaScript 全局函数为开发者提供了基础的数据处理能力,但在使用时需注意兼容性和安全性(尤其是 eval)。结合现代 API(如 URLSearchParams 替代 URI 编码)和严格模式("use strict"),可以编写更安全、高效的代码。