[JavaScript]-----数据类型上

一 简单数据类型

ECMAScript 中有5 种简单数据类型:Undefined、Null、Boolean、Number 和String。

还有一种复杂数据类型——Object。

ECMAScript 不支持任何创建自定义类型的机制,所有值都成为以上6 中数据类型之一。

二 typeof操作符

用法 typeof xxx

typeof 操作符可以操作变量,也可以操作字面量。虽然也可以这样使用:typeof(box),
但,typeof 是操作符而非内置函数。PS:函数在ECMAScript 中是对象,不是一种数据类型。
所以,使用typeof 来区分function 和object 是非常有必要的。

三 Undefined 类型

Undefined类型只有一个值,即特殊的undefined。在使用var变量前,但没有对其初始化时,这个变量就是undefined。

var box;

alert(box);

注意:未初始化的变量与根本不存在的变量是不一样的。


四  Null类型

Null 类型是一个只有一个值的数据类型,即特殊的值null。它表示一个空对象引用(指针),而typeof 操作符检测null 会返回object。
var box = null;
alert(typeof box);

由于undefined 和null 两个值的比较是相等的,所以,未初始化的变量和赋值为null 的
变量会相等。这时,可以采用typeof 变量的类型进行比较。但,建议还是养成编码的规范,
不要忘记初始化变量。
var box;
var car = null;
alert(typeof box == typeof car)


五 Boolean类型

虽然Boolean 类型的字面量只有true 和false 两种,但ECMAScript 中所有类型的值都有
与这两个Boolean 值等价的值。要将一个值转换为其对应的Boolean 值,可以使用转型函数
Boolean()。

var hello = 'Hello World!';
var hello2 = Boolean(hello);
alert(typeof hello);
上面是一种显示转换,属于强制性转换。而实际应用中,还有一种隐式转换。比如,在
if 条件语句里面的条件判断,就存在隐式转换。
var hello = 'Hello World!';
if (hello) {
  alert('如果条件为true,就执行我这条!');
} else {
  alert('如果条件为false,就执行我这条!');
}

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

六 Number

要想确定一个数值到底是否超过了规定范围,可以使用isFinite()函数。如果没有超过,
返回true,超过了返回false。

var box = 100e1000;
alert(isFinite(box)); //返回false 或者true


NaN,即非数值(Not a Number)是一个特殊的值,这个数值用于表示一个本来要返回数
值的操作数未返回数值的情况(这样就不会抛出错误了)。

比如,在其他语言中,任何数值除
以0 都会导致错误而终止程序执行。但在ECMAScript 中,会返回出特殊的值,因此不会影
响程序执行。
var box = 0 / 0; //NaN
var box = 12 / 0; //Infinity
var box = 12 / 0 * 0; //NaN

可以通过Number.NaN 得到NaN 值,任何与NaN 进行运算的结果均为NaN,NaN 与自
身不相等(NaN 不与任何值相等)。
alert(Number.NaN); //NaN
alert(NaN+1); //NaN
alert(NaN == NaN) //false

ECMAScript 提供了isNaN()函数,用来判断这个值到底是不是NaN。isNaN()函数在接
收到一个值之后,会尝试将这个值转换为数值。

alert(isNaN(NaN)); //true
alert(isNaN(25)); //false,25 是一个数值
alert(isNaN('25')); //false,'25'是一个字符串数值,可以转成数值
alert(isNaN('Lee')); //true,'Lee'不能转换为数值
alert(isNaN(true)); //false true 可以转成成1

有3 个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。Number()
函数是转型函数,可以用于任何数据类型,而另外两个则专门用于把字符串转成数值。
alert(Number(true)); //1,Boolean 类型的true 和false 分别转换成1 和0
alert(Number(25)); //25,数值型直接返回
alert(Number(null)); //0,空对象返回0
alert(Number(undefined)); //NaN,undefined 返回NaN


由于Number()函数在转换字符串时比较复杂且不够合理,因此在处理整数的时候更常
用的是parseInt()。
alert(parsetInt('456Lee')); //456,会返回整数部分
alert(parsetInt('Lee456Lee')); //NaN,如果第一个不是数值,就返回NaN
alert(parseInt('12Lee56Lee')); //12,从第一数值开始取,到最后一个连续数值结束
alert(parseInt('56.12')); //56,小数点不是数值,会被去掉
alert(parseInt('')); //NaN,空返回NaN

parseFloat()是用于浮点数值转换的,和parseInt()一样,从第一位解析到非浮点数值位置。
alert(parseFloat('123Lee')); //123,去掉不是别的部分
alert(parseFloat('0xA')); //0,不认十六进制
alert(parseFloat('123.4.5')); //123.4,只认一个小数点
alert(parseFloat('0123.400')); //123.4,去掉前后导
alert(parseFloat('1.234e7')); //12340000,把科学技术法转成普通数值

七 String类型

如果在转型之前不知道变量是否是null 或者undefined 的情况下,我们还可以使用转型
函数String(),这个函数能够将任何类型的值转换为字符串。
var box = null;
alert(String(box));
PS:如果值有toString()方法,则调用该方法并返回相应的结果;如果是null 或者
undefined,则返回"null"或者"undeinfed"。

八 Object

ECMAScript 中的对象其实就是一组数据和功能的集合。对象可以通过执行new 操作符
后跟要创建的对象类型的名称来创建。
var box = new Object();

Object()是对象构造,如果对象初始化时不需要传递参数,可以不用写括号,但这种方
式我们是不推荐的。
var box = new Object;


Object()里可以任意传参,可以传数值、字符串、布尔值等。而且,还可以进行相应的
计算。
var box = new Object(2); //Object 类型,值是2
var age = box + 2; //可以和普通变量运算
alert(age); //输出结果,转型成Number 类型了
既然可以使用new Object()来表示一个对象,那么我们也可以使用这种new 操作符来创
建其他类型的对象。
var box = new Number(5); //new String('Lee')、new Boolean(true)
alert(typeof box); //Object 类型



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章