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每隔5分钟执行一次ajax请求的实现方法
Nov 27 Javascript
jquery.ajax之beforeSend方法使用介绍
Dec 08 Javascript
innerHTML在IE中报错解决方案
Dec 15 Javascript
javascript字符串与数组转换汇总
May 26 Javascript
jQuery在ie6下无法设置select选中的解决方法详解
Sep 20 Javascript
利用yarn实现一个webpack+react种子
Oct 25 Javascript
jquery仿ps颜色拾取功能
Mar 08 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
Jun 11 Javascript
vue主动刷新页面及列表数据删除后的刷新实例
Sep 16 Javascript
vue动态删除从数据库倒入列表的某一条方法
Sep 29 Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
layui扩展上传组件模拟进度条的方法
Sep 23 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
我的论坛源代码(七)
2006/10/09 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
2016/12/15 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
JS调用CS里的带参方法实例
2013/08/01 Javascript
JS实现div居中示例
2014/04/17 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
python创建关联数组(字典)的方法
2015/05/04 Python
python生成器表达式和列表解析
2016/03/10 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
python实现狄克斯特拉算法
2019/01/17 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
python调用有道智云API实现文件批量翻译
2020/10/10 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
新闻学毕业生自荐信
2013/11/15 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
python单向链表实例详解
2022/05/25 Python
Mysql如何查看是否使用到索引
2022/12/24 MySQL