当前位置:首页 > 日记 > 正文

javascript 中null和undefined区分和比较

javascript 中null和undefined区分和比较

javascript 中null和undefined区分和比较

Undefined类型

Undefined 类型只有一个值,即特殊 undefined 。在使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined ,

例如:

var message;alert(message == undefined); //true

这个例子只声明了变量 message ,但未对其进行初始化。比较这个变量与 undefined 字面量,结果表明它们是相等的。这个例子与下面的例子是等价的:

var message = undefined;alert(message == undefined); //true

这个例子使用 undefined 值显式初始化了变量message 。但我们没有必要这么做,因为未经初始化的值默认就会取得 undefined 值。

一般而言,不存在需要显式地把一个变量设置为undefined 值的情况。字面值 undefined 的主要目的是用于比较,而ECMA-262第3版之前的版本中并没有规定这个值。第3版引入这个值是为了正式区分空对象指针与未经初始化的变量。

不过,包含 undefined 值的变量与尚未定义的变量还是不一样的。看看下面这个例子:

 var message; // 这个变量声明之后默认取得了undefined值// 下面这个变量并没有声明// var age  alert(message);  // "undefined"alert(age);  // 产生错误

运行以上代码,第一个警告框会显示变量message 的值,即 “undefined” 。而第二个警告框——由于传递给 alert() 函数的是尚未声明的变量age ——则会导致一个错误。对于尚未声明过的变量,只能执行一项操作,即使用 typeof 操作符检测其数据类型(对未经声明的变量调用delete 不会导致错误,但这样做没什么实际意义,而且在严格模式下确实会导致错误)。

然而,令人困惑的是:对未初始化的变量执行typeof 操作符会返回 undefined 值,而对未声明的变量执行typeof操作符同样也会返回undefined值。来看下面的例子:

var message; // 这个变量声明之后默认取得了undefined值// 下面这个变量并没有声明 // var agealert(typeof message);  // "undefined" alert(typeof age);  // "undefined"

结果表明,对未初始化和未声明的变量执行 typeof 操作符都返回了 undefined 值;这个结果有 其逻辑上的合理性。因为虽然这两种变量从技术角度看有本质区别,但实际上无论对哪种变量也不可能执行真正的操作。

提示:

即便未初始化的变量会自动被赋予undefined值,但显式地初始化变量依然是明智的选择。如果能够做到这一点,那么当typeof操作符返回”undefined”值时,我们就知道被检测的变量还没有被声明,而不是尚未初始化。

Null类型

Null 类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看, null 值表示一个 空对象指针 ,而这也正是使用 typeof 操作符检测 null 值时会返回 “object” 的原因,如下面的例子所示:

 var car = null; alert(typeof car);  // "object"

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null 而不是其他值。这样一来,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用,如下面的例子所示:

if (car != null){// 对car对象执行某些操作}实际上,undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true:alert(null == undefined);  //true

这里,位于 null 和 undefined 之间的相等操作符(==)总是返回 true ,不过要注意的是,这个操作符出于比较的目的会转换其操作数,尽管null 和 undefined 有这样的关系,但它们的用途完全不同。如前所述,无论在什么情况下都没有必要把一个变量的值显式地设置为 undefined,可是同样的规则对 null 却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存 null 值。这样做不仅可以体现null 作为空对象指针的惯例,而且也有助于进一步区分 null 和 undefined。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

微信小视频临时保存在哪微信小视频

微信小视频临时保存在哪微信小视频

位置,方法,小视频,电脑软件,strong,  为方便广大微信用户,微信小视频新推出了这个临时保存的功能,那么临时保存的位置到底在哪呢?小编整理了关于微信小视频临时保存的位置,希望对大家有帮助!查看微信小视频临时保存位置的方法1、首先大家先进…

ppt2010怎么设置页码大小ppt2010设

ppt2010怎么设置页码大小ppt2010设

设置,步骤,方法,页码,大小,  有事需要在PPT中添加图片,是不是感觉PPT太小,只能缩小图片导致图片模糊不清?此时要怎么做呢?下面小编教你怎么设置页码大小。希望对你有帮助!ppt2010设置页码大小的步骤1.打开软件:先打开PowerPoint,新建一个幻灯…

JS实现加载时锁定HTML页面元素的方

JS实现加载时锁定HTML页面元素的方

元素,锁定,加载,方法,页面,本文实例讲述了JS实现加载时锁定HTML页面元素的方法。分享给大家供大家参考,具体如下:在html加载时js锁定页面内所有input,textarea,select 具体js如下index.jsfor(z=0;z<document.getElementsByTagName('input').…

JS开发中基本数据类型具体有哪几种

JS开发中基本数据类型具体有哪几种

基本数据类型,几种,电脑软件,JS,JS开发中基本数据类型有哪些?JS的数据类型包括基本数据类型、复杂数据类型和特殊数据类型,今天我们主要先讲解一下基本数据类型。0、先提示两个下面用到的知识点:0.1typeof,是用来检测变量类型的写法:typeof a;0.2…

快速解决百度编译器json报错的问题

快速解决百度编译器json报错的问题

百度,编译器,报错,快速,电脑软件,在MyEclipse中JSON字符串的换行值是不同的,必须以'/n'换行,如果只是json验证的问题,可以把json的验证关掉试试。点击所在的项目->Project->Proterties->MyEclipse->Validation,把JSON Validator中的Manual和…

应用word模板的两种方法

应用word模板的两种方法

方法,模板,两种,电脑软件,word,  Word模板是指Microsoft Word中内置的包含固定格式设置和版式设置的模板文件,用于帮助用户快速生成特定类型的Word文档。借助这些模板,用户可以创建比较专业的Word文档。那么下面就由小编给大家分享下应用wo…

手机美丽说怎么用微信支付?

手机美丽说怎么用微信支付?

微信支付,美丽,电脑软件,  手机美丽说怎么用微信支付?美丽说专为时尚女生量身定做的利器,让MM们紧跟潮流的时尚热榜,足不出户就可以感受到当下的流行主题,MM们可以选择自己感兴趣的时尚主题、分享搭配照片!下面小编就告诉大家美丽说微信支付…

解决vue里碰到 $refs 的问题的方法

解决vue里碰到 $refs 的问题的方法

方法,电脑软件,vue,refs,本篇文章介绍了vue里碰到 $refs 的问题,分享给大家,希望能帮助大家解决问题记录困惑自己一个简单的问题...(瞬间感觉官方文档的强大)在自己做的一个项目中,遇到一个列表页,根据id能进入详情页(动态匹配路由),详情页是单独…

JavaScript编程设计模式之构造器模

JavaScript编程设计模式之构造器模

编程,设计模式,模式,构造器,实例分析,本文实例讲述了JavaScript编程设计模式之构造器模式。分享给大家供大家参考,具体如下:经典的OOP语言中,构造器(也叫构造函数)是一个用于初始化对象的特殊方法。在JS中,因为一切皆对象,对象构造器经常被提起。…

ps怎么制作很梦幻的抽丝花朵效果?

ps怎么制作很梦幻的抽丝花朵效果?

效果,梦幻,电脑软件,ps,ps中想要使用滤镜制作抽丝效果的花朵,该怎么绘制呢?下面我们就来看看详细的教程。软件名称:Adobe photoshop 7.01 官方正式简体中文版软件大小:154MB更新时间:2013-04-191、首先启动Photoshop cs5,执行文件-新建命令,新建一…

AI文件怎么另存为psd分层文件?

AI文件怎么另存为psd分层文件?

文件,分层,另存为,电脑软件,AI,成psd分层文件方便我们后期处理,该怎么将ai文件保存为psd分层文件呢?下面我们就来看看详细的教程。软件名称:Adobe Illustrator CS6 (AI cs6) 精简绿色中文版(32位+64位)软件大小:205MB更新时间:2014-05-111、很多…

ppt如何绘制扇形和半圆的形状图形

ppt如何绘制扇形和半圆的形状图形

扇形,绘制,图形绘制,图形,半圆,  PPT中的形状中有很多图形,ppt中想要绘制一些图形,该怎么使用形状功能绘制扇形和半圆。以下是小编为您带来的关于ppt绘制扇形和半圆的形状,希望对您有所帮助。ppt绘制扇形和半圆的形状1、点击插入---形状 ---…