JavaScript第三课——数据类型(typeof操作符、Undefined类型、Null类型、Boolean类型)
2016-01-31 23:36
981 查看
学习要点:
1.typeof
操作符
2.Undefined
类型
3.Null
类型
4.Boolean
类型
ECMAScript
中有
5
种简单数据类型:Undefined、Null、Boolean、Number
和
String。
还有一种复杂数据类型——Object。
ECMAScript
不支持任何创建自定义类型的机制,所有值都成为以上
6
中数据类型之一。
一.typeof
操作符
typeof
操作符是用来检测变量的数据类型 。对于值或变量使用
typeof
操作符会返回如下字符串。
![](https://img-blog.csdn.net/20160131232909973?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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);
PS:我们没有必要显式的给一个变量赋值为
undefined,因为没有赋值的变量会隐式的(自动的)赋值为
undefined;
而
undefined
主要的目的是为了用于比较 ,ECMAScript
第
3
版之前并没有引入这个值,引入之后为了正式区分空对象与未经初始化的变量。
未初始化的变量与根本不存在的变量
(未声明的变量)也是不一样的。
var box;
alert(age); //age is not defined
PS:如果
typeof box,typeof age
都返回的 undefined。
从逻辑上思考,他们的值,一个是
undefined,一个报错;他们的类型,却都是
undefined。
所以,我们在定义变量的时候,尽可能的不要只声明,不赋值。
三.Null
类型
Null
类型是一个只有一个值的数据类型,即特殊的值
null。
它表示一个空对象引用(指针),而
typeof
操作符检测
null
会返回 object。
var box = null;
alert(typeof box);
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为
null。
这样,当检查
null
值就知道是否已经变量是否已经分配了对象引用了。
var box = null;
if (box != null) {
alert('box
对象已存在!');
}
有个要说明的是:undefined
是派生自
null
的,因此 ECMA-262
规定对它们的相等性测试返回
true。
alert(undefined == null);
由于
undefined
和
null
两个值的比较是相等的,所以,未初始化的变量和赋值为
null
的变量会相等。
这时,可以采用
typeof
变量的类型进行比较。但,建议还是养成编码的规范,不要忘记初始化变量。
var box;
var car = null;
alert(typeof box == typeof car)
四.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,就执行我这条!');}
![](https://img-blog.csdn.net/20160131233554515?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
//box是Undefined类型,值是undefined,类型返回的字符串是undefined
var box;
alert(typeof box);
//box是Boolean类型,值是true,类型返回的字符串是boolean
var box = true;
alert(typeof box);
//box是String类型,值是'周一',类型返回的字符串是bstring
var box = '周一';
alert(typeof box);
//box是Number类型,值是123,类型返回的字符串是number
var box = 123;
alert(typeof box);
//空的对象,标示这个对象创建了,里面没东西
//空对象,标示没有创建,就是一个null
//box是Object类型,值是[object,Object],类型返回的字符串是object
var box = {};
alert(typeof box);
//box是Null类型,值是null,类型返回的字符串是object
var box = null;
alert(typeof box);
//box是Function函数,值是function box(){},类型返回的是function
function box(){
};
alert(typeof box);
//可以直接使用字面量查看类型
alert(typeof new Object());
var box = {};
if(box != null){ //不等于null,说明不是空对象
alert("对象已经创建成功!");
}
//这个表示,你还没有创建对象,但先声明了对象引用而必须初始化的结果
//你还没来得急创建对象,先声明一个对象放在那边,默认初始化为null
var box = null;
//他们都是空的,所以相等理所当然
alert(undefined == null);
//数据类型也必须相等才可以
alert(undefined === null);
1.typeof
操作符
2.Undefined
类型
3.Null
类型
4.Boolean
类型
ECMAScript
中有
5
种简单数据类型:Undefined、Null、Boolean、Number
和
String。
还有一种复杂数据类型——Object。
ECMAScript
不支持任何创建自定义类型的机制,所有值都成为以上
6
中数据类型之一。
一.typeof
操作符
typeof
操作符是用来检测变量的数据类型 。对于值或变量使用
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);
PS:我们没有必要显式的给一个变量赋值为
undefined,因为没有赋值的变量会隐式的(自动的)赋值为
undefined;
而
undefined
主要的目的是为了用于比较 ,ECMAScript
第
3
版之前并没有引入这个值,引入之后为了正式区分空对象与未经初始化的变量。
未初始化的变量与根本不存在的变量
(未声明的变量)也是不一样的。
var box;
alert(age); //age is not defined
PS:如果
typeof box,typeof age
都返回的 undefined。
从逻辑上思考,他们的值,一个是
undefined,一个报错;他们的类型,却都是
undefined。
所以,我们在定义变量的时候,尽可能的不要只声明,不赋值。
三.Null
类型
Null
类型是一个只有一个值的数据类型,即特殊的值
null。
它表示一个空对象引用(指针),而
typeof
操作符检测
null
会返回 object。
var box = null;
alert(typeof box);
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为
null。
这样,当检查
null
值就知道是否已经变量是否已经分配了对象引用了。
var box = null;
if (box != null) {
alert('box
对象已存在!');
}
有个要说明的是:undefined
是派生自
null
的,因此 ECMA-262
规定对它们的相等性测试返回
true。
alert(undefined == null);
由于
undefined
和
null
两个值的比较是相等的,所以,未初始化的变量和赋值为
null
的变量会相等。
这时,可以采用
typeof
变量的类型进行比较。但,建议还是养成编码的规范,不要忘记初始化变量。
var box;
var car = null;
alert(typeof box == typeof car)
四.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,就执行我这条!');}
//box是Undefined类型,值是undefined,类型返回的字符串是undefined
var box;
alert(typeof box);
//box是Boolean类型,值是true,类型返回的字符串是boolean
var box = true;
alert(typeof box);
//box是String类型,值是'周一',类型返回的字符串是bstring
var box = '周一';
alert(typeof box);
//box是Number类型,值是123,类型返回的字符串是number
var box = 123;
alert(typeof box);
//空的对象,标示这个对象创建了,里面没东西
//空对象,标示没有创建,就是一个null
//box是Object类型,值是[object,Object],类型返回的字符串是object
var box = {};
alert(typeof box);
//box是Null类型,值是null,类型返回的字符串是object
var box = null;
alert(typeof box);
//box是Function函数,值是function box(){},类型返回的是function
function box(){
};
alert(typeof box);
//可以直接使用字面量查看类型
alert(typeof new Object());
var box = {};
if(box != null){ //不等于null,说明不是空对象
alert("对象已经创建成功!");
}
//这个表示,你还没有创建对象,但先声明了对象引用而必须初始化的结果
//你还没来得急创建对象,先声明一个对象放在那边,默认初始化为null
var box = null;
//他们都是空的,所以相等理所当然
alert(undefined == null);
//数据类型也必须相等才可以
alert(undefined === null);
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- java-WEB中的监听器Lisener
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- GUI - Web前端开发框架
- Extjs4.0 最新最全视频教程
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 我是运营,我没有假期
- MyEclipse Web Project转Eclipse Dynamic Web Project
- axis备忘
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法