JavaScript变量二(数据类型,Number,String,Object)
最后更新于:2022-04-01 11:43:44
**Number类型:**
Number类型是JavaScript中最令人关注也是最复杂的类型了。这种类型使用IEEE754格式来表示整数和浮点数值(浮点数值在某些语言中也被称为双精度数值).为支持各种数值类型,ECMA-262定义了不同的数值字面量格式。
主要分为十进制,八进制,十六进制。除了以十进制表示外,整数还可以通过八进制(以8为基数)或十六进制(以16为基数)的自面值来表示,其中,八进制字面值的第一位必须是(0),然后是八进制数字序列(0-7)。如果字面值中的数值超出了范围,那么前面的零将被忽略。请看下面的例子:
~~~
<script>
var intNum=10; //整数
var octalNum1=01010; //十进制的520
var octalNum2=018; //无效的八进制-解析为18;
</script>
~~~
浮点数值就是该数值必须包含一个小数点,并且小数点后面必须至少有一位数字。虽然小数点前面可以没有整数,但是不推荐这种写法;以下是浮点数值的几个例子:
~~~
<script>
var floatNum1=1.1;
var floatNum2=0.1;
var floatNum3=.1; //有效但不推荐
</script>
~~~
由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机地将浮点数值转换为整数值。显然,如果小数点后面没有跟任何数字,那么这个数值就可以被作为整数值来保存。同样的,如果浮点数值本身表示的就是一个整数(如1.0),那么该值也会被转换为整数;
对于那些极大或极小的数值,可以用E表示法(即科学计算法)表示的浮点数值。用E表示法表示的数值等于E前面的数值乘以10的指数次幂。也可以使用E表示法表示极小的数值。如0.000000000000000001,这个数值可以用1E-7。浮点数值的最高精度是17位小数,但在进行算术计算时其精确度远远不如整数。例如,0.1加0.2的结果不是0.3,
而是其他值。这个小小的误差会导致我们无法测试特定的浮点数值。
例如
~~~
<script>
var f1=0.1;
var f2=0.2;
if(f1+f2==0.3){
alert("这是错误的");
}
</script>
~~~
如果我们非要去怎么判断的话,也可以使用如下方法;
~~~
var r = (0.3 - (0.1 + 0.2)).toFixed(2);
// r 是 string 的 -0.00
// 然后可以再把它转换成 float 类型
var f = parseFloat(r);
alert(f);
// 得到 f 是 -0,不过跟 0 是相等的 f === 0
~~~
**数值范围:**
由于内存的限制,ECMAScript并不能保存世界上所有的数值。ECMAScript能够表示的最小数值保存在Number.MIN_VALUE中-在大多数浏览器中,这个值是5e-324;能够表示的最大数值保存在Number.MAX_VALUE中-在大多数浏览器中,这个值是1.7976931348623157e+308。如果某次计算的结果得出了一个超出改范围的值,那么这个数值讲会被自动转换成特殊的Infinity值。具体来说就是正无穷和 负无穷;
**NaN:**
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用来表示本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如在Java里面,任何数值除以0都会导致错误,从而停止代码执行.但在javaScript中,任何数除以0都会返回Nan,因此不会影响其他代码的执行。
NaN本身有两个非同寻常的特点,首先,任何涉及NaN的操作都会返回NaN,其次任何值与Nan都不相等,包括NaN本身。
指对NaN的这两个特点,JS定义了isNaN()函数。这个函数接受一个参数,改参数可以是任何类型,而函数会尝试帮我们转换为数值,例如字符串类型的"10",或boolean值都可以;不能转换为数值会返回true;
**数值转换:**
有三个函数可以把非数值的转换为数值:Number(),parseInt,和parseFloat(),第一个函数可以用于任何数据类型,而另外两个函数只适用于字符串。
**String类型:**
String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号(”)或单引号(')表示;
**1.字符字面量**
string数据类型包含一些特殊的字符字面量,也叫转义序列,用于表示非打印字符,或者具有其他用途的字符。
\n 换行; \t制表;\b空格;\r回车;\f进纸;\\斜杠;
**2.字符串的特点**
JS中的字符串是不可变得,也就是说,字符串一旦创建,它们的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充改变量;
**Object类型:**
JS中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建对象类型的实例并为其添加属性和方法,就可以创建自定义方法;
var o=new Object();
这一点跟java很像,但是如果我们不给构造函数传递参数,也可以省略后面的那一对圆括号;
这个 函数最常用的就是valuyeOf()和toString()方法,这两个返回对象的字符串,数值,或布尔值表示,通常与toString()方法的返回值相同。