数据类型

2018-05-07  本文已影响0人  月魂king

ECMAScript中有五种数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有一种复杂数据类型--Object,Object本职上是由一组无须的名值对组成的。

if (car != null) {
  // 对car对象执行指定操作
}

实际上,undefined值时派生自null值的,所以它们的相等性测试要返回true。

console.log(null == undefined);  // true
var number = 55;

整数还可以通过八进制或十六进制的字面量来表示。其中,八进制字面值的第一位必须是0,然后是八进制数字序列(0~7)。如果字面值中的数值超出了范围,那么前导0将被忽略,后面的数值将被当做十进制数值解析。

var number1 = 070; // 0*8^2+7*8^1+0*8^0=56;
var number2 = 079; //无效的八进制数值——解析为79;
var number3 = 08; //无效的八进制数值——解析为8;

八进制字面量在严格模式下是无效的,会导致支持该模式的JavaScript引擎抛出错误。
十六进制字面值的前两位必须是0x,后跟任何十六进制数字(09及AF)。其中字母A~F可以大写也可以小写。

var num1 = 0xA; //十六进制的10;
var num2 = 0x1f; //1*16^1+15*16^0=31;

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

  1. 浮点数值
    浮点数值就是指该数值中心必须包含一个小数点,并且小数点后必须至少有一个数字。
    由于保存浮点数值需要的内存空间是保存整数值的两倍,所以在一些情况下ECMAScript会将浮点数值转换为整数值。当小数点后没有跟任何数字,那么这个数值就可以当做整数值来保存,同样地,如果浮点数值本身表示的就是一个整数,那么该值也会被保存为整数值。
var num1 = 1.; //小数点后面没有数字——解析为1;
var num2 = 1.0; //整数——解析为1;

对于那些极大或极小的数值,可以用e表示法(即科学计数法)表示的浮点数值表示。用e表示法表示的数值等于e前面的数值乘以10的指数次幂。

var num = 3.125e7; //等于31250000;
  1. 数值范围
    由于内存的限制,ECMAScript并不能保存世界上所有的值。
    如果计算得到一个超出js数值范围的值,那么这个数值将自动转换为特殊的infinity(正无穷)值。如果是负数则转换为-infinity(负无穷).
    要想确定一个数值是否是有穷的,可以使用isFinite()函数
console.log(isFinite(Number.MAX_VALUE)); //true
  1. NaN
    NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。
    NaN有两个特点。首先,任何涉及NaN的操作都会返回NaN。其次,NaN与任何值都不相等,包括NaN本身。
alert(NaN == NaN); // false

针对NaN的两个特点,ECMAScript定义了isNaN()函数。这个函数接受一个参数,该参数可以是任何类型。在接收到一个参数后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值。而任何不能转换为数值的值都会导致这个函数返回true

alert(isNaN(NaN)); //true;
alert(isNaN(10)); //false;
alert(isNaN('10')); //false;
alert(isNaN('red)); //true
alert(isNaN(true)); //false
上一篇 下一篇

猜你喜欢

热点阅读