【javaScript】全局函数
在JavaScript中内置了几个系统函数,这些系统函数可以在JavaScript代码中随时随处调用,因此也称为全局函数。
函数 | 说明 |
eval(expr) | 执行字符串expr中的javaScript代码 |
decodeURI(encodedURI) | 将encodedURI进行解码 |
decodeURIComponent(encodedURI) | 将URI组件进行解码 |
encodeURI(URI) | 将URI进行编码 |
encodeURIComponent(String) | 将URI组件进行编码 |
escape(string) | 将string进行编码 |
isFinite(number) | 判断number是不是无穷大 |
isNaN(testValue) | 判断testValue是否为NaN |
Number(objRef) | 将objRef转换为数字 |
parseFloat(str) | 将str转换为浮点型数据 |
parseInt(str,[,radix]) | 将str转换为整型数据 |
String(objRef) | 将objRef转换成字符串 |
unescape(string) | 将string进行编码 |
一:eval(expr) 执行字符串expr中的javaScript代码
var str="1+2"; document.write(str); document.write(eval(str));
以上是一个最简单的例子第一行输出是“1+2”,第二行输出是“”3“,eval执行了str中的语句
二:isFinite(number) 检测一个值是否是无穷大
//以下代码返回false document.write(isFinite(Infinity),"<br>"); document.write(isFinite(-Infinity),"<br>"); document.write(isFinite(NaN),"<br>"); //以下代码返回true document.write(isFinite(123),"<br>"); document.write(isFinite(true),"<br>"); document.write(isFinite("123"),"<br>"); //以下代码返回false document.write(isFinite("abc"),"<br>");
以上代码中Infinity式javaScript中的常量表示无穷大,而-Infinity则表示负无穷大,NaN也是一个常量表示不是数字
根据上面的代码,这个函数是判断是不是有穷大,当是数字或者布尔型返回true,"123"可以隐式转换成数字型
而数字型,无穷大,非数字都是false
三:isNaN(testValue) 检测一个值是否是非数字
//以下代码返回true document.write(isNaN(NaN),"<br>"); document.write(isNaN("abc"),"<br>"); document.write(isNaN(undefined),"<br>"); //以下代码返回false document.write(isNaN(Infinity),"<br>"); document.write(isNaN(123),"<br>"); document.write(isNaN(true),"<br>"); document.write(isNaN("123"),"<br>"); document.write(isNaN(null),"<br>");
NaN非数字,和字母都返回true,值得注意的是undefined(未定义),也不是数字
而布尔型,数字型,null都被javaScript认定是数字返回false
四:parseInt(str,[,radix]) 转换成整数
str:被转换的字符串
radix:用于说明被转换数字的进制,默认是10进制,这个参数是可以省略的,这里我感觉非10进制不太重要,所以不总结这个参数了
javaScript中有两个函数可以转换成整数parseInt(str),Number(str),下面这个例子来说明两个函数之间的区别
var str01="123"; var str02="abc"; var str03="123abc"; var str04="abc123" //返回123 document.write(parseInt(str01),"<br>"); //返回123 document.write(Number(str01),"<br>"); //返回NaN document.write(parseInt(str02),"<br>"); //返回NaN document.write(Number(str02),"<br>"); //返回123 document.write(parseInt(str03),"<br>"); //返回NaN document.write(Number(str03),"<br>"); //返回NaN document.write(parseInt(str04),"<br>"); //返回NaN document.write(Number(str04),"<br>"); //返回NaN document.write(parseInt(null),"<br>"); //返回0 document.write(Number(null),"<br>"); //返回NaN document.write(parseInt(undefined),"<br>"); //返回NaN document.write(Number(undefined),"<br>");
通过以上例子可以清楚的看到:在转换过程中Number()函数遇到不能转换的字符串,将会返回NaN,而如果parseInt()函数遇到不能转换的字符串,它将转换到不能转换为止。这就是两个函数的唯一区别
实际上,parseInt()函数是被设计来把字符串转换成整数,而Number()函数是设计用来把对象转换整数,而根据javaScript的机制,如果不是字符串和对象,容器会隐式转换,也就是自动转换成字符串或对象
所以我们看null被转换时null被封装为对象,而null对象转换成整形是0
四:字符串编码与解码
escape(string):字符串 → ISO字符集中的16进制编码
unescape(string): ISO字符集中的16进制编码 → ISO字符集中的16进制编码
举个栗子:
var str="escape()函数和unescape()函数"; var escapeStr=escape(str); var unescapeStr=unescape(escapeStr); document.write("原始字符串是:",str,"<br>"); document.write("将字符串编码之后是:",escapeStr,"<br>"); document.write("将编码之后的字符串再解码是:",unescapeStr,"<br>");
输出是这样的:
原始字符串是:escape()函数和unescape()函数
将字符串编码之后是:escape%28%29%u51FD%u6570%u548Cunescape%28%29%u51FD%u6570
将编码之后的字符串再解码是:escape()函数和unescape()函数