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 相关文章推荐
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
Aug 05 Javascript
很多人都是用下面的js刷新站IP和PV
Sep 05 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
Apr 22 Javascript
js与jquery分别实现tab标签页功能的方法
Nov 18 Javascript
浅析javaScript中的浅拷贝和深拷贝
Feb 15 Javascript
BootStrap Select清除选中的状态恢复默认状态
Jun 20 Javascript
javascript中的隐式调用
Feb 10 Javascript
JS实现的缓冲运动效果示例
Apr 30 Javascript
js实现轮播图的完整代码
Oct 26 Javascript
微信小程序封装自定义弹窗的实现代码
May 08 Javascript
vue+elementUI实现图片上传功能
Aug 20 Javascript
vue穿梭框实现上下移动
Jan 29 Vue.js
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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
PHP+MySQL插入操作实例
2015/01/21 PHP
php遍历删除整个目录及文件的方法
2015/03/13 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
关于php中一些字符串总结
2016/05/05 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
php封装一个异常的处理类
2017/06/08 PHP
javascript 清除输入框中的数据
2009/04/13 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
js有序数组的连接问题
2013/10/01 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
vue.js学习之递归组件
2016/12/13 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
2021/03/01 Vue.js
Python之pandas读写文件乱码的解决方法
2018/04/20 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
Selenium定位元素操作示例
2018/08/10 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
django将数组传递给前台模板的方法
2019/08/06 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
美国羊皮公司:Overland
2018/01/15 全球购物
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
银行职业规划书范文
2013/12/28 职场文书
中学生个人自我评价
2014/02/06 职场文书
2014年客房部工作总结
2014/11/22 职场文书
美丽心灵观后感
2015/06/01 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python