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 相关文章推荐
jquery cookie实现的简单换肤功能适合小网站
Aug 25 Javascript
JS.elementGetStyle(element, style)应用示例
Sep 24 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
Mar 26 Javascript
js实现文字跑马灯效果
Feb 23 Javascript
vue之数据交互实例代码
Jun 16 Javascript
详解用webpack把我们的业务模块分开打包的方法
Jul 20 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
Dec 25 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
Aug 10 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
Sep 13 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
Nov 20 Javascript
JS轻量级函数式编程实现XDM三
Jun 16 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实现读取手机客户端浏览器的类
2015/01/09 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
Python实现Sqlite将字段当做索引进行查询的方法
2016/07/21 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python3下载抖音视频的完整代码
2019/06/05 Python
python提取xml里面的链接源码详解
2019/10/15 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
2015年党员干部承诺书
2015/01/21 职场文书