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检测Firefox浏览器是否启用了Firebug的代码
Dec 28 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
Jun 06 Javascript
jQuery获取动态生成的元素示例
Jun 15 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
Sep 26 Javascript
学习Bootstrap滚动监听 附调用方法
Jul 02 Javascript
jquery插件uploadify多图上传功能实现代码
Aug 12 Javascript
JavaScript队列、优先队列与循环队列
Nov 14 Javascript
微信小程序 登录的简单实现
Apr 19 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
Aug 06 Javascript
javascript中undefined的本质解析
Jul 31 Javascript
详解利用eventemitter2实现Vue组件通信
Nov 04 Javascript
浅谈vue-props的default写不写有什么区别
Aug 09 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
php 数组动态添加实现代码(最土团购系统的价格排序)
2011/12/30 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
PHP中利用sleep函数实现定时执行功能实现代码
2016/08/25 PHP
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
jQuery利用sort对DOM元素进行排序操作
2016/11/07 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
2020/11/24 Javascript
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
python实现分页效果
2017/10/25 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
Html5与App的通讯方式详解
2019/10/24 HTML / CSS
个人贷款承诺书
2014/03/28 职场文书
工作检讨书500字
2014/10/19 职场文书
华清池导游词
2015/02/02 职场文书
社团个人总结范文
2015/03/05 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
解决xampp安装后Apache无法启动
2022/03/21 Servers