javaScript数据类型和值
1、数字
javaScript并不区别整形数值和浮点数值,在javaScript中,所有的数字都是用浮点型表示的。
javaScript支持数值直接量的形式有:整型直接量、八进制和十六进制直接量,还有浮点型直接量。例如213(整型),0xfc(十六进制),0345(八进制),其中某些javaScript不支持八进制直接量,最好不要使用八进制直接量(以0开头),在javaScript还可以用Math对象,例如:正弦sin_x = Math.sin(x),平方根hypot = Math.sqrt(x*x + y*y)。
发现了一点有趣的东西,虽然以前见过,但是不是很熟悉,现在可以熟悉一下了:当一浮点值大于所能表示的最大值时,用Infinity表示无穷大,同样还有负无穷大(-Infinity),加个负号就可以:>同样,还有NaN表示非数字的特殊值,这个数字值很特殊,跟任何数值都不相等,包括它自身,必须得用专门的函数判断:isNaN()来检测这个值,isFinitel()来检测一个数是否是NaN、正无穷或者负无穷。我用脚本试验了几个:
<script>
document.write("Number.NaN:"+Number.NaN+"<br>"); //NaN
document.write("Number.MAX_VALUE:"+Number.MAX_VALUE+"<br>"); //能表示的最大值
document.write("Number.MIN_VALUE:"+Number.MIN_VALUE+"<br>"); //最小值
document.write("Number.POSITIVE_INFINITY:"+Number.POSITIVE_INFINITY+"<br>"); //正无穷
document.write("Number.NEGATIVE_INFINITY:"+Number.NEGATIVE_INFINITY+"<br>"); //负无穷
</script>
结果显示:
Number.MAX_VALUE:1.7976931348623157e+308
Number.MIN_VALUE:5e-324
Number.POSITIVE_INFINITY:Infinity
Number.NEGATIVE_INFINITY:-Infinity
2、字符串
javaScript中只有字符串,不存在字符类型,
字符串用单引号或者双引号来定界(括起来),当碰到字符串中存在单引号或者双引号的时候,与定界符想同,需要反斜杠\作为转义符来转义一下,比如:'It\'s a good day!'
javaScript的转义序列:
\0
NUL字符
\b
退格符
\t
制表符
\n
换行符
\v
垂直制表符
\f
换页符
\r
回车符
\"
双引号
\'
单引号
\\
反斜线符
\xXX 由两位十六进制数值XX指定的Latin-1字符
\uXXXX 由四位十六进制数XXXX指定的Unicode字符
字符串有很多字符串操作函数,用起来非常方便:
<script>
var str = "string operation foo";
var length = str.length;
var last_char = str.charAt(length-1);
document.write(last_char+"<br>");
var sub = str.substring(2,7);
document.write(sub+"<br>");
var pos = str.indexOf('e');
document.write("the first position of letter e is:"+pos);
</script>
结果显示:
ring
the first position of letter e is:9
把数字转换成字符串的方法:
一、使用String()函数。例如:var String_value = String(123);
二、经常用的方法,toString(),例如var n=123; var String_value = n.toString();需要注意的是:该方法还有一个可选参数(我也是刚刚知道...),该参数用来指定转换的基数,例如:
<script>
var n = 18;
bin_string = n.toString(2);//转换成该数值二进制数的字符串
octal_string = "0" + n.toString(8);//八进制字符串
hex_string = "0x" + n.toString(16);//十六进制字符串
document.write("二进制字符串:"+bin_string+"<br>八进制字符串:"+octal_string+"<br>十六进制字符串:"+hex_string);
</script>
结果显示为:
二进制字符串:10010
八进制字符串:022
十六进制字符串:0x12
ECMAScript v3 和javaScript 1.5 通过为Number类增加了3个新的数字到字符串的方法来解决显示一次而传统格式数字的问题(javaScript 1.5以前没有内建方法来把一个数字转换为字符串,并且指定其中所包含的小书店的位置,或者指定是否应该使用指数表示法)。
一、toFixed()方法把一个数字转换成字符串,并显示小数点后指定的位数;
二、toExponential()使用指数表示法把一个数字转换成字符串;
三、toPrecision()使用指定有意义的位数来显示一个数字,如果有意义的数字还不够显示整个整数部分,他就使用指数表示法(我的理解就是,如果这个数整数部分有8为,而指定了4位,用小数模式无法显示,只好用指数表示法了:>)
代码试验:
<script>
var n =1234567.89
n1 = n.toFixed(0);
n2 = n.toFixed(1);
n3 = n.toExponential(1);
n4 = n.toExponential(4);
n5 = n.toPrecision(3);
n6 = n.toPrecision(8);
document.write("n="+n+"<br>");
document.write("n.toFixed(0)="+n1+"<br>");
document.write("n.toFixed(1)="+n2+"<br>");
document.write("n.toExponential(1)="+n3+"<br>");
document.write("n.toExponential(4)="+n4+"<br>");
document.write("n.toPrecision(3)="+n5+"<br>");
document.write("n.toPrecision(8)="+n6+"<br>");
</script>
结果显示:
n.toFixed(0)=1234568
n.toFixed(1)=1234567.9
n.toExponential(1)=1.2e+6
n.toExponential(4)=1.2346e+6
n.toPrecision(3)=1.23e+6
n.toPrecision(8)=1234567.9
1、数字
<script>
document.write("Number.NaN:"+Number.NaN+"<br>"); //NaN
document.write("Number.MAX_VALUE:"+Number.MAX_VALUE+"<br>");
document.write("Number.MIN_VALUE:"+Number.MIN_VALUE+"<br>");
document.write("Number.POSITIVE_INFINITY:"+Number.POSITIVE_INFINITY+"<br>");
document.write("Number.NEGATIVE_INFINITY:"+Number.NEGATIVE_INFINITY+"<br>");
</script>
结果显示:
Number.MAX_VALUE:1.7976931348623157e+308
Number.MIN_VALUE:5e-324
Number.POSITIVE_INFINITY:Infinity
Number.NEGATIVE_INFINITY:-Infinity
2、字符串
javaScript的转义序列:
\0
\n
\r
\\
\uXXXX
字符串有很多字符串操作函数,用起来非常方便:
<script>
var str = "string operation foo";
var length = str.length;
var last_char = str.charAt(length-1);
document.write(last_char+"<br>");
var sub = str.substring(2,7);
document.write(sub+"<br>");
var pos = str.indexOf('e');
document.write("the first position of letter e is:"+pos);
</script>
结果显示:
ring
the first position of letter e is:9
把数字转换成字符串的方法:
一、使用String()函数。例如:var String_value = String(123);
二、经常用的方法,toString(),例如var n=123; var String_value = n.toString();需要注意的是:该方法还有一个可选参数(我也是刚刚知道...),该参数用来指定转换的基数,例如:
<script>
var n = 18;
bin_string = n.toString(2);//转换成该数值二进制数的字符串
octal_string = "0" + n.toString(8);//八进制字符串
hex_string = "0x" + n.toString(16);//十六进制字符串
document.write("二进制字符串:"+bin_string+"<br>八进制字符串:"+octal_string+"<br>十六进制字符串:"+hex_string);
</script>
结果显示为:
二进制字符串:10010
八进制字符串:022
十六进制字符串:0x12
ECMAScript v3 和javaScript 1.5 通过为Number类增加了3个新的数字到字符串的方法来解决显示一次而传统格式数字的问题(javaScript 1.5以前没有内建方法来把一个数字转换为字符串,并且指定其中所包含的小书店的位置,或者指定是否应该使用指数表示法)。
一、toFixed()方法把一个数字转换成字符串,并显示小数点后指定的位数;
二、toExponential()使用指数表示法把一个数字转换成字符串;
三、toPrecision()使用指定有意义的位数来显示一个数字,如果有意义的数字还不够显示整个整数部分,他就使用指数表示法(我的理解就是,如果这个数整数部分有8为,而指定了4位,用小数模式无法显示,只好用指数表示法了:>)
代码试验:
<script>
var n =1234567.89
n1 = n.toFixed(0);
n2 = n.toFixed(1);
n3 = n.toExponential(1);
n4 = n.toExponential(4);
n5 = n.toPrecision(3);
n6 = n.toPrecision(8);
document.write("n="+n+"<br>");
document.write("n.toFixed(0)="+n1+"<br>");
document.write("n.toFixed(1)="+n2+"<br>");
document.write("n.toExponential(1)="+n3+"<br>");
document.write("n.toExponential(4)="+n4+"<br>");
document.write("n.toPrecision(3)="+n5+"<br>");
document.write("n.toPrecision(8)="+n6+"<br>");
</script>
结果显示:
n.toFixed(0)=1234568
n.toFixed(1)=1234567.9
n.toExponential(1)=1.2e+6
n.toExponential(4)=1.2346e+6
n.toPrecision(3)=1.23e+6
n.toPrecision(8)=1234567.9