资讯专栏INFORMATION COLUMN

我所知道的JavaScript之undefined和null的区别

hatlonely / 1759人阅读

摘要:是全局对象的一个属性,当声明了一个变量而未初始化时,得到的就是。作为函数的参数,表示该函数的参数不是对象。作为对象原型链的终点。表示缺少值,此处应该有值,但未定义。因此和的值相等而类型不相等。数字运算不相同这是由于约定的不同所决定的。

对于undefined和null我一直知道他们有很多区别,也知道一点关于他们的区别,但却不具体系统,因此总结了一下,主要心得如下:

我们要区分它们,首先要明确这两个值所代表的意义:

null 是一个 JavaScript字面量,表示空值,即没有对象被呈现,它是JavaScript的原始值之一,使用typeof运算得到 “object”。

undefined 是全局对象的一个属性,当声明了一个变量而未初始化时,得到的就是undefined。

具体表现如下:

a;
console.log(a);
//Uncaught ReferenceError: a is not defined

var b = null;
console.log(b); //null

而它们出现的情景也各不相同,具体总结如下:

null:即表示为空,没有对象。

作为函数的参数,表示该函数的参数不是对象。

作为对象原型链的终点。

undefined:表示缺少值,此处应该有值,但未定义。

变量被声明了,但没有值,此时为undefined

调用函数时,应该提供的参数没有提供,此时为undefined

对象没有赋值的属性,此属性值为undefined

函数没有返回值,默认返回undefined

null与undefined的区别主要体现在以下三点:
1.值相等而类型不相等
var x;
var y = null;
console.log(x == y); //ture
console.log(x ===y); //false

在上面的代码中 == 会继续类型转换,且值是相等的,所以会得出 ture;而在
=== 中则不会发生类型转换所以得出的是 false。因此undefined和null的值相等而类型不相等。

2.数字运算不相同
1+null 
//1

1+undefined 
//NaN

这是由于约定的不同所决定的。在规定中数字与undefined运算时,结果都NaN。在与null运算时,null始终为0。

3.具体作法不一样

当我们想要判断一个值是否存在可以这样写:

objA.valueA === undefined 

而当我们想要判断一个对象是否为空时可以这么写:

objA.valueA == null 

最后借一波MDN总结的null和undefined的区别的代码:

typeof null         // object (因为一些以前的原因而不是"null")
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

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

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

相关文章

  • 我所理解JavaScriptundefinednull区别

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

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

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

    zhigoo 评论0 收藏0
  • 谈谈javascript语法里一些难点问题(一)

    摘要:引子前不久我建立的技术群里一位问了一个这样的问题,她贴出的代码如下所示执行结果如下所示第一个第二个这是一个令人诧异的结果,为什么第一个弹出框显示的是,而不是呢这种疑惑的原理我描述如下一个页面里直接定义在标签下的变量是全局变量即属于对象的变量 1) 引子 前不久我建立的技术群里一位MM问了一个这样的问题,她贴出的代码如下所示: var a = 1; function hehe...

    huaixiaoz 评论0 收藏0
  • JavaScript中“数组也是对象”

    摘要:数组也是对象简单来说,对象就是一系列属性名值对,即某个属性名对应某个属性值当我们遍历对象时,不在对象中的属性当然不会被访问到。我们知道操作符用于删除对象中某个属性,而中,数组就是对象的一种,数组的索引就是其属性名,对应的项就是属性值。 先说结论吧: 数组的map方法在IE9以下是不支持的,因此需要写一个兼容方法来实现此行为,在实现兼容的时候:必须注意:对于数组中被删除(dele...

    Sike 评论0 收藏0
  • javascript 基础类型转换

    摘要:类型转换和表示一个空对象。如果有其他类型想转换为或者类型,直接赋值就可以了。都能隐式的把数据类型转为类型。。。时间时间二数字类型转换为字符串默认是进制是一个对象类型,所以其他类型转化为通常都是。 前言 javaScript是一门可以自由进行数据类型转换的编程语言,类型转换是javaScript很重要的特色(坑点很多!!!),大家想以后写出更多严谨的代码(少出一些莫名其妙的Bug),还是...

    timger 评论0 收藏0

发表评论

0条评论

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