学习要点:
1.typeof操作符
2.Undefined类型
3.Null类型
4.Boolean类型
5.Number类型
6.String类型
7.Object类型
ECMAScript中有5种简单数据类型:Undefined、Null、Boolean、Number和String。还有一种复杂数据类型——Object。ECMAScript不支持任何创建自定义类型的机制,所有值都成为以上6中数据类型之一。
一.typeof操作符
typeof操作符是用来检测变量的数据类型。对于值或变量使用typeof操作符会返回如下字符串。
字符串 |
描述 |
undefined |
未定义 |
boolean |
布尔值 |
string |
字符串 |
number |
数值 |
object |
对象或null |
function |
函数 |
1.var box;
alert(typeof box); //box是Undefined类型,值是undefined,类型返回的字符串是undefined
2.var box = true;
alert(typeof box); //box是Boolean类型,值是true,类型返回的字符串是boolean
3.var box = '李炎恢';
alert(typeof box); //box是String类型,值是'李炎恢',类型返回的字符串是string
4.var box = 250;
alert(typeof box); //box是Number类型,值是250,类型返回的字符串是number
//空的对象,表示这个对象创建了,里面没东西
//空对象,表示没有创建,就是一个null
5.var box = {};
alert(typeof box); //box是Object类型,值是[object Object],类型返回的字符串是object
var box = null;
alert(typeof box); //box是Null类型,值是null,类型返回的字符串是object
var box = new Object();
alert(box); //box是Object类型,值是[object Object],类型返回的字符串是object
6.function box() { }
alert(typeof box); //box是Function函数,值是function box() {}打印出本体,类型返回的字符串是function
一.typeof操作符
var box = '李炎恢';
alert(typeof box);
alert(typeof '李炎恢');
typeof操作符可以操作变量,也可以操作字面量。虽然也可以这样使用:typeof(box),但,typeof是操作符而非内置函数。PS:函数在ECMAScript中是对象,不是一种数据类型。所以,使用typeof来区分function和object是非常有必要的。
二.Undefined类型
Undefined类型只有一个值,即特殊的undefined。在使用var声明变量,但没有对其初始化时,这个变量的值就是undefined。
var box;
alert(box);
没必要写成var box = undefined;
alert(box);
PS:我们没有必要显式的给一个变量赋值为undefined,因为没有赋值的变量会隐式的(自动的)赋值为undefined;而undefined主要的目的是为了用于比较,ECMAScript第3版之前并没有引入这个值,引入之后为了正式区分空对象与未经初始化的变量。
var box;
var age;
alert(box); undefined
alert(age); //age is not defined 报错
alert(typeof box); undefined
alert(typeof age); undefined
PS:如果typeof box,typeof age都返回的undefined。从逻辑上思考,他们的值,一个是undefined,一个报错;他们的类型,却都是undefined。所以,我们在定义变量的时候,尽可能的不要只声明,不赋值。
三.Null类型
Null类型是一个只有一个值的数据类型,即特殊的值null。它表示一个空对象引用(指针),而typeof操作符检测null会返回object。
var box = null;
alert(typeof box);
var box = {};
if (box != null) { //不等于null,说明不是空对象
alert('对象已经创建成功!');
}
var box = null; //这个表示,你还没有创建对象,但先声明了对象引用而必须初始化的结果
//你还没有来得及创建对象,先声明一个对象的变量放在那边,默认初始化为null
var box=null;
var box = 1;
alert(typeof box);
var box = ''; //创建一个字符串变量,一开始不知道初始化什么字符串,所以,就给他一个空字符串初始化
var box = 0; //数值初始化,一般用0
var box = false; //布尔值初始化,一般一开始用false或者true
alert(undefined == null); //他们都是空的,所以相等理所当然,true
alert(undefined === null); //数据类型也必须相等才可以 false
alert(typeof undefined == typeof null); false
四.Boolean类型
Boolean类型有两个值(字面量):true和false。而true不一定等于1,false不一定等于0。JavaScript是区分大小写的,True和False或者其他都不是Boolean类型的值。
var box = true;
alert(typeof box);
虽然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,就执行我这条!');
}
以下是其他类型转换成Boolean类型规则
数据类型 |
转换为true的值 |
转换为false的值 |
Boolean |
true |
false |
String |
任何非空字符串 |
空字符串 |
Number |
任何非零数字值(包括无穷大) |
0和NaN |
Object |
任何对象 |
null |
Undefined |
|
undefined |