资讯专栏INFORMATION COLUMN

JavaScript中undefined和null的区别

BaronZhang / 1650人阅读

摘要:数据类型定义首先,从本质来看,他们是两种不同的数据类型。类型类型只有一个值,即特殊的。在使用声明变量但未对其加以初始化时,这个变量的值就是。从逻辑角度来看,值表示一个空对象指针。返回的是布尔类型。结合的相关知识,理解很多返回的值有

数据类型、定义

首先,从本质来看,他们是两种不同的JavaScript数据类型。直接上《JavaScript高级程序设计》里的解释好了。
Undefined类型:Undefined类型只有一个值,即特殊的undefined。在使用var 声明变量但未对其加以初始化时,这个变量的值就是undefined。
Null类型:Null类型也只有一个特殊的值——null。从逻辑角度来看,null值表示一个空对象指针。

运算符或者函数操作结果

alert
a:声明但未定义(undefined)
b:声明且定义为null
c:未声明

typeof
a:声明但未定义(undefined)
b:声明且定义为null(表示定义的变量将来用于保存对象)
c:未声明(对于尚未声明过的变量,只能执行一项操作,就是用typeof检测其数据类型)

instanceof
a:定义为undefined
b:定义为null

转换成布尔值

用 !逻辑非运算符,undefined和null会自动转换成布尔值false,但是直接用==则会失效。

两者之间比较 == && ===

== 运算符比较:在对比不同类型时先做数据类型转换,转换后比较两个变量的值
===运算符比较:比较两个数据的数据类型以及值

题外(内?)话——typeof和instanceof之间的区别

typeof:是运算符,不是函数,用于检测变量的数据类型。返回的是一个字符串。
使用方法eg. Typeof(“string”) 其中括号可加可不加
typeof返回的值有:undefined, string, boolean, number, object, function

分析一下上图的两个结果:
typeof 1: 1就是一个数字类型的常量,故结果为”number”;
new Number(1) 创建一个Number类型的对象,值为1,故结果为”object”

instanceof用于判断一个变量是否是某个对象(类)的实例。返回的是布尔类型。
在控制台做了如下两行代码的测试,最先试的其实是第二行代码,输出false的时候我还有有些惊讶的,a不是赋值1了嘛,怎么是false呢?于是我又仔细读了一下instanceof的定义,对象,类,1根本就是一个常量嘛,跟对象的实例根本不挨边。(结合Java的OOP相关知识,理解很多)
instanceof返回的值有:true false

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100048.html

相关文章

  • undefinednull区别

    摘要:目前,和基本是同义的,只有一些细微的差别。表示没有对象,即该处不应该有值。作为对象原型链的终点。五新增持续更新中一般是意外情况产生的,则是有意为对象赋值来说明这是一个空的对象的返回值是的类型是 摘自阮一峰博客,另附自己的理解分析。 大多数计算机语言,有且仅有一个表示无的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。有点奇怪的是,J...

    defcon 评论0 收藏0
  • 我所知道JavaScriptundefinednull区别

    摘要:是全局对象的一个属性,当声明了一个变量而未初始化时,得到的就是。作为函数的参数,表示该函数的参数不是对象。作为对象原型链的终点。表示缺少值,此处应该有值,但未定义。因此和的值相等而类型不相等。数字运算不相同这是由于约定的不同所决定的。 对于undefined和null我一直知道他们有很多区别,也知道一点关于他们的区别,但却不具体系统,因此总结了一下,主要心得如下: 我们要区分它们,首先...

    hatlonely 评论0 收藏0
  • 我所理解JavaScript undefinednull区别

    摘要:他们的布尔值都是,说到布尔值为的,通常包括空字符串这五种常见的对象。各自都是孤家寡人,不用拖家带口的,一人吃饱全家不饿。 举个简单的栗子: A和B两个人肚子都很饿,要去吃饭。A已打电话到饭店预约位置,B则打算下班后考察下再做决定。对于饭店来说,A基本上就是他的客户了,只不过还没见到人来,定为null(毕竟交易还没产生),而对饭店来说,B是谁啊,他们根本没听到过这个人,为undefine...

    sf190404 评论0 收藏0
  • JS基础之undefinednull区别分析

    摘要:例如自定义局部变量作用域上的引用比较作用域上的引用比较其中,定义局部变量时,其初始值会是对属性值的引用。新定义的局部变量存在与该函数的作用域上。这就是许多前端框架为什么常常要自己定义一个局部变量的原因 在javascript开发中,开始学习js的时候时常困惑我的就是null和undefined的区别,所以很想总结下我对这两个的理解学习过js的同学都知道: null==undefined...

    zhigoo 评论0 收藏0
  • JavaScript只声明但没有初始化变量未声明变量以及null/undefined区别

    摘要:只声明但没有初始化的变量和未声明的变量以及的区别声明但没有初始化的变量浏览器会弹出窗口显示因为对于使用了声明但没有进行初始化定义的变量其值默认为未声明的变量浏览器不会弹出任何东西因为是没有声明的变量打开浏览器的控制台会看到报错如下未声明的变 只声明但没有初始化的变量和未声明的变量以及null/undefined的区别 1. 声明但没有初始化的变量 var aa; alert(aa); ...

    zhangyucha0 评论0 收藏0

发表评论

0条评论

BaronZhang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<