您的位置:首页 > Web前端 > JavaScript

JavaScript数据类型

2018-03-06 15:02 183 查看
JavaScript有以下5个简单的数据类型:Undefined,Null,Boolean,Number,String。和一个复杂的数据类型:Object

1.Undefined类型

Undefined类型只有一个值,就是undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。例如:
var message;
console.log(message); //输出undefined
console.log(typeof message); //输出undefined

对于尚未被声明的变量而言,直接输出值会报错,执行typeof操作则会返回undefined
//var age;
console.log(age); //报错
console.log(typeof age);//输出undefined

2.Null类型

Null类型也只有一个值,就是null。从逻辑角度来看,null值表示一个空对象指针,而这也是使用typeof操作符检测null值时会返回object的原因。如下所示:
var car = null;
console.log(typeof car); //输出object
实际上,undefined值是派生自null值,因此ECMA-262规定对它们的相等性测试要返回true
console.log(undefined == null); //输出true

3.Boolean类型

Boolean类型是ECMAScript中使用的最多的一种类型,该类型只有两个字面值:true和false。这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0。
ECMAScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用转换函数Boolean(),如下所示:
var message = "hello";
console.log(Boolean(message)); //输出true
下面给出了各种数据类型及其对应的转换规则:

    数据类型转换为true的值转换为false的值
Booleantruefalse
String任何非空字符串""空字符串
Number任何非零数字值(包括无穷大)0和NaN
Object任何对象null
Undefinedn/a(不适用)undefined
这些转换规则对理解控制流语句,自动执行相应的Boolean转换非常重要,如下所示:
var message = "hello";
if(message){
    console.log("Value is true");

}

4.Number类型

Number类型可以表示整数和浮点数值,除了表示十进制外,整数还可以通过八进制或十六进制的字面量来表示。其中八进制字面量的第一个值必须是零(0),然后是八进制数字序列(0~7)。如果字面值中的数值超出了范围。那么前导零将被忽略,后面的数值将被当做十进制解析,如下所示:
var octalNum1 = 070;//八进制的56
var octalNum2 = 079;//无效的八进制数值-解析为79
十六进制前面两位必须是0x,后面跟任何十六进制数字(0~9及A~F)。其中字母A~F可以大写,也可以小写。如下面所示:
var hexNum1 = 0xA; //十六进制的10
在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换为十进制数值。

4.1 浮点数值

浮点数值的最高精度是17位小数,但在进行算术计算时其精度远远不如整数。例如0.1加0.2的结果不是0.3,而是0.30000....0004。这个小小的舍入误差会导致无法测定特定的浮点数值。例如:
if(a + b == 0.3){
    console.log("hello")

}
在这个例子中,如果两个数是0.15和0.15都没有问题,但如果是0.1和0.2,那么测试将无法通过。因此,永远也不要测试某个特定的浮点数值。

4.2 数值范围

ECMAScript能够表示的最小数值保存在Number_MIN_VALUE中,最大值保存在Number_MAX_VALUE中。如果某次计算的寄过得到了一个超出JavaScript数值范围的值,那么这个值将自动转换为Infinity或-Infinity。要想确定一个数值是不是有穷的,可以使用isFinite()函数。这个函数在参与最小与最大数值之间时会返回true

4.3 NaN

NaN用来引用特殊的非数字值。它有两个特点:首先,任何涉及NaN的操作(NaN/10)都换返回NaN,这个特点在多步计算时可能会导致问题。其次,NaN和任何值都不相等,包括NaN本身。
针对NaN这两个特点,ECMAScript定义了isNaN()函数。isNaN()在接收一个值之后,会尝试将这个值转换为数值。而任何不能被转换成数字的值都会返回true,请看下面的例子:
        console.log(isNaN(NaN));  //输出true
        console.log(isNaN(10)); //输出false
        console.log(isNaN("10")); //输出false
        console.log(isNaN("blue")); //输出true
        console.log(isNaN(true)); //输出false

4.4 数值转换

有3个函数可以把非数值转换为数值:Number(),parseInt(),parseFloat()。第一个函数,可以用于任何数据类型,而另外两个则专门用于把字符串转换为数值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: