JavaScript数据类型详解(2)

  所以,相应的,也就存在一个其他数据类型与Boolean字面值的对应关系,如下表所示:

  数据类型     转换为true的值     转换为false的值  
Boolean   true   false  
String   任何非空字符串   ""(空字符串)  
Number   任何非零数字值(包含无穷大)   0和NaN  
Object   任何对象   null  
Undefined   不适用   undefined  

  在程序运行的时候,比如在流控制语句中,识别程序自动执行相应的Boolean转换是很重要的,请看下例:

var text = "Hi"; if(text){ alert(value is true); }

  上面代码在执行时,变量text就会被自动用Boolean()函数转换为Boolean类型。如果还要用String类型的text的话,那么就是一个重大错误了。所以一定要确切的知道在流控制语句中使用的是什么变量。

  5、Number类型

  Number类型使用IEEE754格式来表示整数和浮点数值。

  Javascript中最基本的数值字面值格式是十进制整数,除此之外整数还可以通过八进制(八进制字面值第一位为0,后面是0~7的八进制数字序列)、十六进制(前两位为0x,后跟任何十六位数字,0~9,及A~F)。在进行算术运算时,所有数值都将被转换成十进制数值进行计算。

  在Number类型中,我主要想说以下几个问题:

  1、永远不要测试某个特定的浮点数值,请看下例:

if(a + b == 0.3) //不要做这样的测试 alert("你得到了0.3!");

  如果这里a和b分别是0.05和0.25,或者是0.15和0.15都不会有问题,如果这两个值是0.1和0.2,那么测试就将无法通过。

  2、数值范围:

  最小值:Number.MIN_VALUE  =  5e-324  = -Infinity

  最大值:Number.MAX_VALUE  =  1.7976931348623157e+308  = Infinity

  如果在计算当中超过了最大或最小,都会被相应的转换为+Infinity或者-Infinity。

  当计算0/0时,会得到NaN,计算正数/0会得到Infinity,计算负数/0会得到-Infinity。

  3、NaN,即非数值,是一个特殊的值。这个数值用来表示一个本来要返回数值的操作数未返回数值的情况。

  NaN的特点:第一、任何涉及NaN的操作都会返回NaN。因为ECMAScript中任何数值除以非数值都会返回NaN,从而不会影响其他代码执行,所以这个特点在多步计算中可能会导致问题。其次、NaN与任��值都不想等,包括自身。

  针对这两个特点,ECMAScript定义了isNaN()函数,该函数接受一个任何类型的参数,函数会帮助我们确定这个参数是否是NaN。任何不能被转换成为数值的值都会导致这个函数返回true。请看下例:

alert(isNaN(NaN)); //true alert(isNaN(10)); //false alert(isNaN("true")); //true

  4、数值转换

  把非数值转换成数值的方法有Number()、paserInt()、parseFloat(),其中Number()可以接受任意类型的参数,paserInt()、parseFloat()则专门用于转换字符串。

     Number()类型的转换规则:

    (1)布尔值:true=1,false=0;

    (2)null=0;

    (3)undefined=NaN;

    (4)字符串:

         a: 字符串是数值,转换成十进制,忽略前导0,如果以“0x”开头,则按照十六进制解析成十进制(由此可见,八进制是个特殊的存在)

         b:字符串是空串,转换为0;

         c:除此之外全部转换成NaN;

    (5)对象:方法和isNaN()判断对象的方法基本相同。

 

   

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/22c62b3bbc9372e1b57585d93ecfed38.html