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 相关文章推荐
我也种棵OO树JXTree[js+css+xml]
Apr 02 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
Aug 12 Javascript
js判断鼠标同时离开两个div的思路及代码
May 31 Javascript
JavaScript中Function()函数的使用教程
Jun 04 Javascript
Angular 页面跳转时传参问题
Aug 01 Javascript
jQuery购物网页经典制作案例
Aug 19 Javascript
boostrap模态框二次弹出清空原有内容的方法
Aug 10 Javascript
bootstrap table表格插件之服务器端分页实例代码
Sep 12 Javascript
JavaScript两种计时器的实例讲解
Jan 31 Javascript
JavaScript闭包相关知识解析
Oct 19 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 Vue.js
React更新渲染原理深入分析
Dec 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
ie6 动态缩略图不显示的原因
2009/06/21 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
百度地图API使用方法详解
2015/08/25 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
react国际化化插件react-i18n-auto使用详解
2020/03/31 Javascript
解决ant-design-vue中menu菜单无法默认展开的问题
2020/10/31 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
python中循环语句while用法实例
2015/05/16 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
对Python中画图时候的线类型详解
2019/07/07 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
学期研究性学习个人的自我评价
2014/01/09 职场文书
户外用品商店创业计划书
2014/01/29 职场文书
委托书范文
2014/04/02 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
队列队形口号
2015/12/25 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
使用springMVC所需要的pom配置
2021/09/15 Java/Android
Nginx限流和黑名单配置
2022/05/20 Servers
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android