JavaScript基本类型值-Undefined、Null、Boolean


Posted in Javascript onFebruary 23, 2017

大致介绍

ECMAScript中有5中简单的数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number、String。

Undefined

Undefined时全局变量的一个属性,它只有一个值即:undefined。当使用var声明变量但未对其初始化时,这个变量的值就是undefined。

var test;
console.log(test); //undefined

对于未声明过的变量只能进行一种操作,即typeof检测其数据类型

//var a 
console.log(typeof a); //undefined

undefined通常出现的场景:

1、已经声明但未赋值的变量

2、typeof检测未声明的变量的数据类型

3、没有返回值的函数的执行结果

4、函数没有传入参数

5、void(expression)

//1、
 var test;
 console.log(test); //undefined
 //2、
 //var a 
 console.log(typeof a); //undefined
 //3、
 function f(){}
 console.log(f()); //undefined
 //4、
 function f(x){
 return x;
 }
 console.log(f()); //undefined
 //5、
 console.log(void(0)); //undefined

严格相等和undefined

可以使用严格相等和不相等来检测一个变量是否拥有值

var x ;
 if(x === undefined){
 console.log(1);
 }else{
 console.log(2);
 }

注意:这里要用严格相等,因为 null == undefined

void操作符和undefined

可以用void操作符来代替undefined

var x ;
 if(x === void(0)){
 console.log(1);
 }else{
 console.log(2);
 }

Null

Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑的角度看,null值表示一个空对象的指针。null常被放在期望一个对象,但不引用任何对象的参数位置。

console.log(document.getElementById('ol')); //null

注意:

console.log(typeof null); //object

产生这样的原因就如前面所说,null值表示一个空对象的指针,用typeof检测数据类型,肯定就是object

从最底层讲不同的对象在底层都表示为二进制,在javascript中二进制前三位都为0会被判断为object类型,null的二进制表示是全0,所以执行typeof时返回'object'

null和undefined

null和undefined时不同的,但是他们都表示空值,null表示“空值”,undefined表示“未定义”。

typeof null // object 
 typeof undefined // undefined
 null === undefined // false
 null == undefined // true
 null === null // true
 null == null // true
 !null //true
 isNaN(1 + null) // false
 isNaN(1 + undefined) // true

Boolean

Boolean类型是ECMAScript中使用最多的一种类型,该类型只有两个字面值:true和false

注意:Boolean类型的字面值true和false是区分大小写的

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

var message = 'hello world';
var messageBoolean = Boolean(message);
console.log(messageBoolean); //true

转换表:

字符串 数字 布尔值
undefined "undefined" NaN false
null  “null”  0  false
true  “true”  1  
false  “false”  0  
""空字符串    0  
"1.2" 非空,数字    1.2  
"o" 非空,非数字      
 0  "0"    false
 -0 "0"    false 
 NaN  "NaN"   false 
 infinity  "infinity"   true 
-infinity   "infinity"   true 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
js 获取和设置css3 属性值的实现方法
May 06 Javascript
js格式化时间和js格式化时间戳示例
Feb 10 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
Jun 06 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
Jan 23 Javascript
JS实现HTML标签转义及反转义
Apr 14 Javascript
vue仿淘宝订单状态的tab切换效果
Jun 23 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
Sep 28 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
Jan 06 Javascript
layui table去掉右侧滑动条的实现方法
Sep 05 Javascript
js实现tab栏切换效果
Aug 02 Javascript
详解React的回调渲染模式
Sep 10 Javascript
Javascript 链式作用域详细介绍
Feb 23 #Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
Feb 23 #Javascript
bootstrap weebox 支持ajax的模态弹出框
Feb 23 #Javascript
COM组件中调用JavaScript函数详解及实例
Feb 23 #Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
Feb 23 #Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
Feb 23 #Javascript
JS实现的五级联动菜单效果完整实例
Feb 23 #Javascript
You might like
PHP的开发框架的现状和展望
2007/03/16 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
PHP dirname功能及原理实例解析
2020/10/28 PHP
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
深入理解ES6的迭代器与生成器
2017/08/19 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
PyQt5每天必学之拖放事件
2020/08/27 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
python科学计算之narray对象用法
2019/11/25 Python
python 遍历pd.Series的index和value
2019/11/26 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
Python里面如何实现tuple和list的转换
2012/06/13 面试题
UNIX特点都有哪些
2016/04/05 面试题
玲玲的画教学反思
2014/02/04 职场文书
小学校本培训方案
2014/06/06 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
黄石寨导游词
2015/02/05 职场文书
单位计划生育责任书
2015/05/09 职场文书
浅析NIO系列之TCP
2021/06/15 Java/Android