常用的内置函数
在使用JavaScript语言时,除了可以自定义函数之外,还可以使用JavaScript的内置函数,这些内置函数是由JavaScript语言自身提供的函数。主要有一下这些
函数
|
说明
|
parseInt()
|
将字符型转换为整形
|
parseFloat()
|
将字符型转换为浮点型
|
isNaN()
|
判断一个数值是否为NaN
|
isFinite()
|
判断一个数值是否有限
|
eval()
|
求字符串中表达式的值
|
encodeURI()
|
将URI字符串进行编码
|
decodeURI()
|
对已编码的URI字符串进行解码
|
(1)
parseInt()
函数
parseInt() 函数可解析一个字符串,并返回一个整数。
当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。
当忽略参数 radix , JavaScript 默认数字的基数如下:
如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。
parseInt(string, radix)
string:必需。要被解析的字符串。
radix:可选。表示要解析的数字的基数(几进制的数据)。该值介于 2 ~ 36 之间。
<script>
document.write(parseInt("10")); //结果为:10
document.write(parseInt("10.33")); //结果为:10
document.write(parseInt("34 45 66")); //结果为:34
document.write(parseInt(" 60 ")); //结果为:60
document.write(parseInt("40 years")); //结果为:40
document.write(parseInt("He was 40")); //结果为:NaN
document.write(parseInt("10", 10)); //结果为:10
document.write(parseInt("010")); //结果为:10
document.write(parseInt("10", 8)); //结果为:8
document.write(parseInt("0x10")); //结果为:16
document.write(parseInt("10", 16)); //结果为:16
</script>
var demo = "123";
var num = parseInt(demo);
console.log(typeof (num) + ":" + num); //答案显示 number:123
var demo = true;
var num = parseInt(demo);
console.log(typeof (num) + ":" + num); //答案显示 number: NaN
var demo = false;
var num = parseInt(demo);
console.log(typeof (num) + ":" + num); //答案显示 number: NaN
var demo = 123.45;
var num = parseInt(demo);
console.log(typeof (num) + ":" + num); //答案显示 number: 123,此处是直接去掉小数,不是四舍五入
var demo = "10";
var num = parseInt(demo, 16);
console.log(typeof (num) + ":" + num); //答案显示 number: 16
var demo = "3";
var num = parseInt(demo, 2);
console.log(typeof (num) + ":" + num); //答案显示 number: NaN 。二进制没有3
var demo = "b";
var num = parseInt(demo, 16);
console.log(typeof (num) + ":" + num); //答案显示 number: 11
var demo = "123abc";
var num = parseInt(demo);
console.log(typeof (num) + ":" + num); //答案显示 number: 123
var demo = "100px";
var num = parseInt(demo);
console.log(typeof (num) + ":" + num); //答案显示 number: 100
注意: 从数字类开始看,看到非数字为止,返回原来的数。
注意: 开头和结尾的空格是允许的。
注意:如果字符串的第一个字符不能被转换为数字,那么 parseInt() 会返回 NaN。
注意:
在字符串以"0"为开始时旧的浏览器默认使用八进制基数。ECMAScript 5,默认的是十进制的基数。
(2)
parseFloat()
函数
parseFloat() 函数可解析一个字符串,并返回一个浮点数。
该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止,然后以数字返回该数字,而不是作为字符串。
parseFloat(string)
string:必需。要被解析的字符串。
<script>
document.write(parseFloat("10")); //结果为:10
document.write(parseFloat("10.00")); //结果为:10
document.write(parseFloat("10.33")); //结果为:10.33
document.write(parseFloat("34 45 66")); //结果为:34
document.write(parseFloat(" 60 ")); //结果为:60
document.write(parseFloat("40 years")); //结果为:40
document.write(parseFloat("He was 40")); //结果为:NaN
</script>
var demo = "100.25";
var num = parseFloat(demo);
console.log(typeof (num) + ":" + num); //答案显示 number: 100.25
var demo = "100.2.3";
var num = parseFloat(demo);
console.log(typeof (num) + ":" + num); //答案显示 number: 100.2
var demo = "100.2abc";
var num = parseFloat(demo);
console.log(typeof (num) + ":" + num); //答案显示 number: 100.2
注意: 从数字类开始看,看到非数字为止,返回前面的数。
注意:
开头和结尾的空格是允许的。
注意:
如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。
(3)
isNaN()
函数
isNaN() 函数用于检查其参数是否是非数字值。
如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。
isNaN(value)
value:必需。要检测的值。
<script>
document.write(isNaN(123)); //结果为:false
document.write(isNaN(-1.23)); //结果为:false
document.write(isNaN(5 - 2)); //结果为:false
document.write(isNaN(0)); //结果为:false
document.write(isNaN("Hello")); //结果为:true
document.write(isNaN("2005/12/12")); //结果为:true
</script>
需要注意的是,isNaN() 函数其实并不能像它的描述中所写的那样,数字值返回 false,其他返回 true。实际上,它是判断一个值能否被 Number() 合法地转化成数字。
这中间有什么区别呢,主要提现在一些特别的情况如下:
1、
数字形式的字符串。例如 "123"、"-3.14",虽然是字符串型,但被 isNaN() 判为数,返回 false。("12,345,678","1.2.3" 这些返回 true)
2、空值。null、空字符串""、空数组[],都可被Number()合法的转为0,于是被isNaN认为是数,返回false。(undefined、空对象{}、空函数等无法转数字,返回true)
3、布尔值。Number(true)=1,Number(false)=0,所以isNaN对布尔值也返回false。
4、长度为 1 的数组。结果取决于其中元素,即:isNaN([a])=isNaN(a),可递归。例如isNaN([["1.5"]])=false。
5、数字特殊形式。例如"0xabc"、"2.5e+7",这样的十六进制和科学计数法,即使是字符串也能转数字,所以也返回false。
总之,很多时候不能用单纯用 isNaN() 取判断。
比如一个空值或者数组,甚至是包含字母和符号的字符串,它都有可能告诉你这是数值。还是要结合具体情况使用。
(4)
isFinite()
函数
isFinite() 函数用于检查其参数是否是无穷大。
提示:
如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。
isFinite(value)
value:必需。要检测的数字。
<script>
document.write(isFinite(123)); //结果为:true
document.write(isFinite(-1.23)); //结果为:true
document.write(isFinite(5 - 2)); //结果为:true
document.write(isFinite(0)); //结果为:true
document.write(isFinite("Hello")); //结果为:false
document.write(isFinite("2005/12/12")); //结果为:false
</script>
(5)eval()函数
eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。
如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。
eval(
string
)
string:必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。
<script>
eval("x=10;y=20;document.write(x*y)"); //结果为:200
document.write("<br>" + eval("2+2")); //结果为:4
document.write("<br>" + eval(x + 17)); //结果为:27
</script>
提示:eval() 是一个危险的函数,它使用与调用者相同的权限执行代码,所以尽可能的不要去使用它,以防被其他人员植入恶意代码,相似的 Function 就不容易被攻击。