JavaScript全局函数:URI编码与类型转换详解

叶初
叶初
发布时间:2026-10-13| 4人浏览过
原创

本文深入解析JavaScript中的全局函数,重点对比uri编码函数的差异,并详解eval执行机制及isnan、number等类型转换工具的用法,为前端开发提供准确的函数参考。

URI编码与解码函数

第1步:理解encodeURI与encodeURIComponent的区别

encodeURI()用于对整个URI进行编码,保留协议、主机名和路径分隔符(如:、/、?、#)。若需对URI中的特定组件(如查询参数或哈希值)进行编码,应使用encodeURIComponent()。后者会转义所有非字母数字字符,包括常规URI中的标点符号,确保组件间的分隔符不被错误编码。

示例:

// 整个URI编码,保留?和#
const uri = "https://www.example.com/search?q=hello world";
console.log(encodeURI(uri)); // https://www.example.com/search?q=hello%20world

// 仅对组件编码,转义?
console.log(encodeURIComponent("q=hello world")); // q%3Dhello%20world

第2步:使用decode系列函数还原编码

对应的解码函数为decodeURI()和decodeURIComponent()。它们分别对应上述两个编码函数。注意:切勿混用编码与解码函数,例如使用decodeURI()解码由encodeURIComponent()产生的数据会导致错误。

第3步:弃用的escape/unescape函数

escape()和unescape()属于早期标准,已自ECMAScript v3起被标记为废弃。现代开发中推荐使用encodeURI()和encodeURIComponent()替代。escape()仅针对ASCII码小于256的字符进行编码,不处理中文等多字节字符时的Unicode兼容性,因此不建议在新项目中使用。

代码执行与数值判断函数

第4步:谨慎使用eval进行动态代码执行

eval(string)接收一个字符串参数,将其作为JavaScript代码执行。虽然灵活,但存在严重的安全风险(如注入攻击)且性能较差。

示例:

let result = eval("10 + 20");
console.log(result); // 输出 30

// 注意:如果传入非字符串,将原样返回该对象
console.log(eval(123)); // 输出 123

安全提示:尽量避免直接使用eval。如需解析JSON数据,请使用标准的JSON.parse()方法。

第5步:判断数值状态isNaN与isFinite

  • isNaN(value):检查参数是否为“非数字”(NaN)。它会自动尝试将参数转换为数字再进行判断。如果转换失败或结果为NaN,则返回true。
  • isFinite(value):检查参数是否为有限数。如果是NaN、正无穷(Infinity)或负无穷(-Infinity),则返回false。通常用于验证输入是否为有效数字。

示例:

console.log(isNaN("易水寒")); // true,无法转换为数字
console.log(isNaN("123"));   // false,可转换为123
console.log(isFinite(100));  // true
console.log(isFinite(
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。