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中的for语句循环结构
Nov 10 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
Dec 15 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
Javascript之Number对象介绍
Jun 07 Javascript
javascript验证内容为数字以及长度为10的简单实例
Aug 20 Javascript
AngularJS bootstrap启动详解及实例代码
Sep 14 Javascript
js创建对象几种方式的优缺点对比
Sep 28 Javascript
JS函数修改html的元素内容,及修改属性内容的方法
Oct 28 Javascript
深入研究React中setState源码
Nov 17 Javascript
vue 实现微信浮标效果
Sep 01 Javascript
用VsCode编辑TypeScript的实现方法
May 07 Javascript
微信小程序实现选择地址省市区三级联动
Jun 21 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的call_user_func传reference引发的思考
2010/07/23 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
浅析php创建者模式
2014/11/25 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
28个JS验证函数收集
2010/03/02 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
2014/06/09 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
jQuery给动态添加的元素绑定事件的方法
2015/03/09 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
angular 内存溢出的问题解决
2018/07/12 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
Python中多线程thread与threading的实现方法
2014/08/18 Python
python中ConfigParse模块的用法
2014/09/29 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python实现控制台打印的方法
2019/01/12 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
学校清明节活动总结
2014/07/04 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
python获取字符串中的email
2022/03/31 Python