首页 > 编程语言 > 详细

javascript 数据类型

时间:2016-02-26 18:50:24      阅读:136      评论:0      收藏:0      [点我收藏+]

typeof 操作符
ECMAScript 是松散类型的,因此需要一种手段来检测给定变量的数据类型,typeof 就是负责提供这方面信息的操作符。对一个值使用 typeof 操作符可能返回下列某个字符串:
underfined  --  如果这个值未定义;
boolean  --  如果这个值是布尔值;
string --  如果这个值是字符串;
number  --  如果这个值是数值;
object  --  如果这个值是对象或null;
function  --  如果这个值是函数;

var message = "some string";
alert(typeof message); //"string"
alert(typeof(message)); //"string"
alert(typeof 95); //"number"

typeof null 会返回"object",因为特殊值 null 被认为是一个空的对象引用。

--------------------------
undefined
undefined类型只有一个值,在使用var声明变量单位对变量进行初始化时,值就是undefined
var message;
alert(message == undefined); //true
alert(typeof age) //undefined 未声明


---------------------------
null类型
null 类型是第二个只有一个值得数据类型,从逻辑角度来看,null值表示一个空对象(object)指针。

var car = null;
alert(typeof car); //"object"

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null。这样就可以检查 null 值来知道变量是否有保存一个对象引用。
if(car != null){
  //对 car 对象执行某些操作
}

实际上,undefined 值是派生自 null值得,因此 ECMAScript规定对它们的相等性测试要返回true
alert(null == undefined); //true

------------------------------
boolean类型
boolean类型是ECMAScript 中使用得最多的一种类型,该类型只有两个字面值:true和false。
虽然boolean类型的字面值只有两个,但ECMAScript中所有类型的值都有与这两个boolean值等价的值。

boolean        true                         false
string         任何非空字符串               ""(空字符串)
number         任何非零数字(包括无穷大)   0和NaN
object         任何对象                     null
undefined      n/a(无)                      understand(这个类型只匹配false)

--------------------------------
number 类型
number 类型使用 IEEE754 格式来表示整数和浮点数值(双精度数值)。为支持各种数值类型,ECMA-262 定义了不同的数值字面量格式。

var intNum = 55; //整数
var octalNum1 = 070; //八进制的56
var octalNum2 = 079; //无效的八进制数值--解析为79
var octalNum3 = 08; //无效的八进制数值--解析为8
var hexNum1 = 0xA; //十六进制的 10
var hexNum2 = 0x1f; //十六进制的 31

在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换成十进制数值。

浮点数值
var floatNum1 = 1.1;
var floatNum2 = 0.1
var floatNum3 = .1; //有效,但不推荐

var floatNum1 = 1.; //小数点后没有数字--解析为1
var floatNum2 = 10.0; // 整数--解析为10

var floatNum = 3.125e7 //等于31250000
var floatNum1 = 3e-7 //等于0.0000007

注意:浮点数值的最高精度是17位小数,但在进行算术计算时其精度远远不如整数。例如,0.1加0.2结果不是0.3,而是0.30000000000000004。这个小小的舍入误差会导致无法测试特定的浮点数值。
例如:
if(a + b == 0.3){   // 不要做这样的测试!
  alert("you got 0.3");
}
0.05和0.25或者0.15和0.15都不会有问题,然而0.1和0.2将无法通过,因此永远不要测试某个特定的浮点数值。

关于浮点数值计算会产生舍入误差的问题,有一点需要明确:这是使用基于 IEEE754 数值的浮点计算的通病,ECMAScript并非独此一家;其他使用相同数值格式的语言也存在这个问题。

------------------------------------
数值范围 Infinity(正无穷)  -Infinity(负无穷)
ECMAScript 能够表示的最小数值保存在 Number.MIN_VALUE 中,在大多数浏览器中,这个值是 5e-324;能够表示的最大数值保存在 Number.MAX_VALUE 中,大多数浏览器中,这个值是1.7976931348623157e+308。如果计算的结果得到了一个超出 javascript数值范围的值,将自动转换成特殊的 Infinity 值。
想确定一个数值是不是有穷的,可以使用 isFinite()。这个函数在参数位于最小与最大的数值之间时会返回 true,如下面的例子所示:
var result = Number.MAX_VALUE + Number.MAX_VALUE;
alert(isFinite(result));  //false

Number.POSITIVE_INFINITY  // infinity
Number.NEGATIVE_INFINITY  // -infinity

--------------------------------------
NaN 非数值
0 除以 0 返回 NaN
正数除以 0 返回 Infinity
负数除以 0 返回 -Infinity

NaN 与任何值都不相等,包括NaN本身。
alert(NaN == NaN); //false

ECMAScript 定义了 isNaN() 函数。这个函数可以接受任何类型的参数,并确定这个参数是否“不是数值”,任何不能转换为数值的值都会返回true.
alert(isNaN(NaN)); //true
alert(isNaN(10));  //false
alert(isNaN("10"));  //false(可以转换为10)
alert(isNaN("blue"));  //true
alert(isNaN(true));  //false(可以被转换成1)

尽管有点儿不可思议,但 isNaN()确实也适用于对象。在基于对象调用 isNaN()函数时,会首先调用对象的 valueOf()方法,然后确定该方法返回的值是否可以转换为数值。如果不能,则基于这个返回值再调用 toString()方法,再测试返回值。而这个过程也是 ECMAScript 中内置函数和操作符的一般执行流程

javascript 数据类型

原文:http://www.cnblogs.com/rayma/p/5221185.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!