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 相关文章推荐
利用Ext Js生成动态树实例代码
Sep 08 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
Aug 04 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
May 08 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
Apr 08 Javascript
JavaScript实现拼音排序的方法
Nov 20 Javascript
js获取当前日期时间及其它操作汇总
Apr 17 Javascript
简单介绍JavaScript数据类型之隐式类型转换
Dec 28 Javascript
js简单判断移动端系统的方法
Feb 25 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
Jun 17 Javascript
完美JQuery图片切换效果的简单实现
Jul 21 Javascript
jQuery EasyUI之验证框validatebox实例详解
Apr 10 jQuery
详解AngularJS ui-sref的简单使用
Apr 24 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
发挥语言的威力--融合PHP与ASP
2006/10/09 PHP
php数组去重实例及分析
2013/11/26 PHP
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
8个PHP程序员常用的功能汇总
2014/12/18 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
JavaScript手机振动API
2016/06/11 Javascript
Augularjs-起步详解
2016/07/08 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
extjs4图表绘制之折线图实现方法分析
2020/03/06 Javascript
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
Python中static相关知识小结
2018/01/02 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
在python里从协程返回一个值的示例
2019/02/19 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
物业电工岗位职责
2013/11/20 职场文书
终端业务员岗位职责
2013/11/27 职场文书
家长对孩子的感言
2014/03/10 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL