本文详细介绍JavaScript中的全局函数,涵盖URI编码解码(encodeURI、decodeURIComponent等)、字符串代码执行(eval)、数值判断(isFinite、isNaN)以及类型转换(Number)。重点区分各函数的适用场景与参数限制,并提供具体代码示例。
URI 编码与解码函数
该函数用于对经过 encodeURI() 编码处理的统一资源标识符(URI)进行解码还原。
具体应用示例如下:
例如,将编码后的字符串 https://www.jb51.net/My%20first/ 解码,可还原为 https://www.jb51.net/My first/。
2、decodeURIComponent() 参数类型为 string
此函数专门用于解码由 encodeURIComponent() 函数编码的 URI 字符串。
3、encodeURI() 参数类型为 string
该函数的主要功能是将普通字符串作为完整的 URI 进行编码处理。
需要注意的是,若 URI 组件中包含问号(?)或井号(#)等分隔符,建议分别使用 encodeURIComponent() 对各个组件进行编码,以确保正确性。
4、encodeURIComponent()
此函数用于将字符串作为 URI 的一个组件部分进行编码。
务必区分 encodeURIComponent() 与 encodeURI() 的差异:前者假设其参数是 URI 的组成部分(如协议、主机名、路径或查询字符串)。
因此,encodeURIComponent() 会转义用于分隔 URI 各部分的标点符号,而 encodeURI() 则保留这些分隔符。
5、escape() 参数类型为 string
该函数可对字符串进行编码,使其能在所有计算机系统中被正确读取。它不会对 ASCII 字母和数字进行编码。
同时,它也不会对以下 ASCII 标点符号进行编码:连字符(-)、下划线(_)、点(.)、感叹号(!)、波浪号(~)、星号(*)、单引号(')、左括号(()和右括号())。其余所有字符均会被替换为转义序列。
注意:ECMAScript v3 标准已不推荐使用此方法,官方建议改用 decodeURI() 和 decodeURIComponent() 替代。
6、unescape() 参数类型为 string
该函数用于对通过 escape() 编码的字符串进行解码。其工作原理是查找形式为 %xx 和 %uxxxx 的字符序列(其中 x 代表十六进制数字)。
解码时,系统会将这些字符序列替换为对应的 Unicode 字符 \u00xx 和 \uxxxx。
提示:ECMAScript v3 标准已从规范中移除 unescape() 函数,并反对继续使用,建议改用 decodeURI() 和 decodeURIComponent()。
7、eval() 参数类型为 string
代码执行与数值判断函数
该函数用于计算字符串中的 JavaScript 代码并执行结果。
具体调用示例如下:
执行 document.write(eval("12+2")) 将输出数值 14。
重要提示:传入的参数必须是字符串类型,否则该方法将直接返回原参数而不作任何处理。
8、isFinite() 参数类型为 number
该函数用于检查其参数是否为有限大的数值。如果 number 是有限数字(或可转换为有限数字),则返回 true。
若 number 是 NaN(非数字值),或是正无穷大、负无穷大,则返回 false。
具体测试示例如下:
调用 isFinite(-125) 和 isFinite(1.2) 均返回 true。
而调用 isFinite('易水寒') 和 isFinite('2011-3-11') 则返回 false。
9、isNaN() 参数类型无限制
该函数用于检查其参数是否是非数字值(NaN)。
具体测试示例如下:
调用 isNaN(123) 和 isNaN(0) 均返回 false。
而调用 isNaN("易水寒") 和 isNaN("100") 则返回 true。
注意:可以使用 isNaN() 函数来检测算术错误,例如尝试用 0 作为除数的情况。
10、Number() 参数类型无限制
类型转换与参数总结
该函数用于将对象的值转换为数字。如果参数是 Date 对象,Number() 返回从 1970 年 1 月 1 日至今的毫秒数。若对象的值无法转换为数字,则返回 NaN。具体示例如下:
定义变量 var test1= new Boolean(true);
定义变量 var test2= new Boolean(false);
定义变量 var test3= new Date();
定义变量 var test4= new String("999");
定义变量 var test5= new String("999 888");
执行 document.write(Number(test1)); 输出结果为 1。
执行 document.write(Number(test2)); 输出结果为 0。
执行 document.write(Number(test3)); 输出结果为 1256657776588。
执行 document.write(Number(test4)); 输出结果为 999。
执行 document.write(Number(test5)); 输出结果为 NaN。
此外,
parseFloat() 和 parseInt() 以及 String() 函数的用法将在后续内容中补充。