JavaScript的数据类型

JavaScript的数据类型和Java还是有很大差别的,Java的数据类型分得比较细,而JavaScript只是大致分几个类,其中就有Undefined 、 Null 、Boolean、Number 、 String 、 Object类型。

1、 typeof 操作符

  typeof 主要是为了检测给定变量的数据类型,如:

1 var message = "string";
2 alert(typeof message);  //"string"
3 alert(typeof 89);  //"number"
4 alert(typeof null);  //"object"

注:特殊值null会被认为是一个空的object对象引用。

2、Undefined类型

  Undefined 类型只有一个值,即 undefined 。在使用var声明变量但未进行初始化,这个值就是 undefined。

1 var message ;
2 alert(message);  //undefined
3 alert(age); //产生错误,因为age尚未声明

typeof 用于未定义的变量不会产生错误,如

1 var message;
2 alert(typeof message); // "undefined"
3 alert(typeof age); //"undefined"

3、Null类型

  null 类型也只有一个值,即null,其表示一个空对象指针。

1 var message = null;
2 alert(typeof message); //"object"
3 
4 alert(null == undefined); //true
5 alert(null === undefined); //false,因为数据类型不同

4、Boolean 类型

  值为 true 或 false , 但 true 不一定为1, false 也不一定为0。

1 var messege = "hello"; 
2 var messageBoolean = Boolean(message); //可转化为对应的Boolean值

各种数据类型的转化规则

数据类型转化为 true转化为 false
Booleantruefalse
String任何非空字符串""(空字符串)
Number任何非零数字值(包括无穷大)0 和 NaN(Not a Nunber)
Object任何对象null
Undefinedn/a (not application:不适用)undefined

5、Number 类型

  先举些例子吧

1 var num = 50 ; //十进制整数
2 var num1 = 070 ; //八进制数值,解析为56
3 var num2 = 079 ; // 无效的八进制数,解析为79
4 var num3  = 0xA; //十六进制的10

(1)浮点数值

e或E表示10次幂的指数,如

1 var floatNum = 3.12e2; //等于312
2 var floatNum2 = 3.12e-1; //等于0.312

注:不要用浮点数作为比较值!

(2)数值范围

  在大多数浏览器中,Number.MIN_VALUE = 5e-324 , Number.MAX_VALUE = 1.79e+308 ,其中正无穷为 Infinity ,负无穷为 - Infinity

可以用 isFinite() 函数 判断值是不是无穷值,参数位于最大值和最小值之间返回 true 。

(3)NaN

  Not a Number , NaN与任何值都不相等 , 包括NaN本身。

1 alert(NaN); //false

isNaN() 函数 用来判断是否“不是数值”,如

1 alert(isNaN(NaN)); //true
2 alert(isNaN(19)); //false
3 alert(isNaN("19")); //false,可转化为数值
4 alert(isNaN(true)); //false, 可转化为数值1

(4)数值转化

  1)Number():可用于任何数据类型

1 var num1 = Number("hello world"); // NaN
2 var num2 = Number(""); // 0
3 var num3 = Number("00011"); // 11
4 var num4 = Number(true); //1
5 var num5 = Number(null); // 0

  2)parseInt():返回整数

var num1 = parseInt("1223dsds"); //1223
var num2 = parseInt("ere1223"); // NaN . 第一个字符不是整数
var num3 = parseInt(""); //NaN
var num4 = parseInt("070"); //56(八进制),ECMAScript 5 转化为 70
var num5 = parseInt("0xf"); //15(十六进制)

var num6 = parseInt("0xAF" , 16); //十六进制,175

  3)parseFloat ():返回浮点数

1 var num1 = parseFloat("1234blue"); //1234
2 var num2 = parseFloat("0xA"); //0
3 var num3 = parseFloat("22.5"); //22.5
4 var num4 = parseFloat("22.34.5"); //22.34
5 var num5 = parseFloat("3.125e7"); //3120000

6. String 类型

  1)特点

  字符串一旦创建,它的值就不可变,但可通过先销毁原来的字符串,再填充新值。

1 var lang = java;
2 lang = lang + "Script";
3 alert(lang.length); //10

  2)转化为字符串

var age = 11;
alert(age.toString()); // "11"

var num = 10;
alert(age.toString(2)); //1010 ,二进制
alert(age.toString(8)); //12 , 八进制

var num1 = true;
alert(num1); //"true"

var num2 = null;
alert(num2); //"null"

var num3 ;
alert(num3); //"undefined"

7. Object 类型

var ob = new Object();

实例的属性和方法:

(1)constructor: 用于创建当前对象的函数,上面例子的构造方法为Object()。

(2)hasOwnPeoperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在,如:

1 var bool = ob.hasOwnProperty("name");

(3)isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型。

(4)propertyIsEnumerable(propertyName):用于检查属性是否能够使用for-in语句来枚举。

(5)toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。

(6)toString():返回对象的字符串表示。

(7)valueOf():返回对象的字符串、数值、或布尔值表示。通常与toString()返回值相同。

参考《JavaScript高级程序设计》