第4章 数据类型

学习要点:

1.typeof操作符

2.Undefined类型

3.Null类型

4.Boolean类型

5.Number类型

6.String类型

7.Object类型

ECMAScript中有5种简单数据类型:UndefinedNullBooleanNumberString。还有一种复杂数据类型——ObjectECMAScript不支持任何创建自定义类型的机制,所有值都成为以上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来区分functionobject是非常有必要的。

二.Undefined类型

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

var box;

alert(box);

没必要写成var box = undefined; 

alert(box);

PS我们没有必要显式的给一个变量赋值为undefined,因为没有赋值的变量会隐式的(自动的)赋值为undefined;而undefined主要的目的是为了用于比较,ECMAScript3版之前并没有引入这个值,引入之后为了正式区分空对象与未经初始化的变量。

var box;

var age;

alert(box);  undefined

alert(age);  //age is not defined 报错

alert(typeof box);  undefined

alert(typeof age);   undefined

PS如果typeof boxtypeof 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类型有两个值(字面量)truefalse。而true不一定等于1false不一定等于0JavaScript是区分大小写的,TrueFalse或者其他都不是Boolean类型的值。

var box = true;

alert(typeof box);

虽然Boolean类型的字面量只有truefalse两种,但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

任何非零数字值(包括无穷大)

0NaN

Object

任何对象

null

Undefined

 

undefined

原文地址:https://www.cnblogs.com/Xuman0927/p/5945467.html