null和undefined是JavaScript五种基本数据类型中的两种。

null是一个特殊值,但我们常常误解它,有时候我们会把它和另一个数据类型undefined的含义互相混淆。

首先我们来了解一下null这个特殊值会使用在哪些场景以及它代表着什么样的含义?

1.用来初始化一个变量,这个变量可能赋值为一个对象。看着可能有点懵逼,我们结合代码来解析一下。如下:

var person = null;

//也就是说上面那句话可以这么理解:声明一个变量,初始化这个变量的变量值为null,这个变量可能是一个对象。

2.用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象。同样我们结合代码来解析一下。如下:

var person = getPerson();

if ( person !== null){

doSomething();

}

看完代码是不是就一目了然了?原理是为代码做铺垫的,万事离不开代码,所以理解不了原理,我们就结合代码来理解。当你知道代码你却不知道它的原理,当你知道它的原理却不知道它的代码。所以小刘就建议大家用原理+代码来理解和学习。

3.当函数的参数为对象时,用作参数传入。

function doSomething (arg1){

if(arg1===Object ){

arg1=null;

}

}

4.当函数的返回值是对象时,用作返回值传出。

function getPerson(){

if (condition){

return new Person("KobeBryant");

}else{

return null;

}

}

其次,当我们知道了null的使用场景,是不是也得知道在什么样的场景是不应当使用null的呢?

1.不要使用null来检测是否传入了某个参数。

function doSomething (arg1,arg2,arg3,arg4) {

if (arg2 !==null ){

doSomethingElse();

}

}

2.不要用null来检测一个未初始化的变量。

var person;

if ( person !== null){

doSomething();

}

//用来和未初始化的变量作比较

看了上面的讲解,是不是瞬间秒懂并掌握,如果对您有帮助,请点个赞,如果哪里不够好,请互相学习,可以评论下,我们交流下~

我们继续学习,接下来来对undefined这个莫名其妙的东西进行解析。

同null一样,undefined也是一个特殊值,它是那些被声明了却未初始化的变量,即undefined,等待被赋值;

如:var person;

console(person === undefined);//输出为true

虽然这段代码能够正常工作,但是还是避免在代码中使用undefined,因为不管声明了变量还是未声明的变量,typeof运算结果都能返回一个undefined值。

如:var person;

console(typeof person);//输出值为undefined;

console(typeof foo);//输出值为undefined;

在语句中,未声明的变量是会报错的,通过禁用特殊值undefined,可以有效的确保只在一种情况下typeof才会返回undefinedl:那就是当变量未声明时;如果使用了一个可能赋值为一个对象的变量时,则将其赋值为null;将变量初始化赋值为null表明了这个变量的意图,它最终很可能赋值为对象。typeof运算符运算null的类型时返回Object,这样就可以和undefined区分开了。

如:console(null ==undefined);//输出值为true

var person=null;

console(typeof null);//输出值为object
---------------------
作者:111111111188888888
来源:CSDN
原文:https://blog.csdn.net/DreamsTom/article/details/53888829
版权声明:本文为博主原创文章,转载请附上博文链接!

null与undefined的区别的更多相关文章

  1. 字符串怎么换行 || 字符串中使用单引号时应该怎么写 || 保留两位小数 || 数字0在if中的意思是false || 什么情况下会会报undefined || null和undefined的区别 ||

    换行的字符串 "This string\nhas two lines" 字符串中使用单引号时应该怎么写 'You\'re right, it can\'t be a quote' ...

  2. tips null和undefined的区别

    tips null和undefined的区别 1.undefined类型 undefined类型只有一个值,即特殊的undefined.在使用var声明变量但未对其加以初始化时,这个变量的值就是und ...

  3. JS中null与undefined的区别

    1.typeof操作符 用来检测变量的数据类型 例:typeof 3.14 //返回number typeof [1,2,3]  //返回object 2.null 只有一个值的特殊类型,表示一个空对 ...

  4. js操作css样式,null和undefined的区别?

    1.js操作css的样式 div.style.width="100px"在div标签内我们添加了一个style属性,并设定了width值.这种写法会给标签带来大量的style属性, ...

  5. 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂

    浅谈JS中的!=.== .!==.===的用法和区别   var num = 1;     var str = '1';     var test = 1;     test == num  //tr ...

  6. json,js中typeof用法详细介绍及NaN、 null 及 undefined 的区别

    JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换成json对符串 在js使用中的一个函 ...

  7. null和undefined的区别、数组和伪数组的区别

    null和undefined的区别 undefined: 字面意思是未定义的值,语义是希望表示一个变量最原始的状态,而非人为操作的结果.这种原始状态会在以下四个场景中出现: 声明了一个变量但没有赋值 ...

  8. 浅谈js中null和undefined的区别

    在JS中,null和undefined是经常让人摸不着头脑的东西,尤其是在数据初始化以及处理的过程中,经常稍微不注意,就会让页面在渲染时出现报错,下面来细说下,这两者之间的区别: null 表示一个对 ...

  9. JavaScript null和undefined的区别

    前言 1995年javascript诞生时,最初像Java一样,只设置了null作为表示"无"的值.根据C语言的传统,null被设计成可以自动转为0 但是,javascript的设 ...

  10. JavaScript中Null和Undefined的区别

    Null: null是js中的关键字,表示空值,null可以看作是object的一个特殊的值,如果一个object值为空,表示这个对象不是有效对象. Undefined: undefined不是js中 ...

随机推荐

  1. Kafka的安装是否成功的简单测试命令

    首先了解一下kafka的基本概念 .1. BrokerKafka集群包含一个或多个服务器,这种服务器被称为broker2. Topic每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topi ...

  2. 如何使用onclick方式添加多个事件回调函数

    通过给onclcik包裹一个函数进行上下文的切换与参数的传递: function addClcikEvent(el, fn){ if(el.onclick){ var _back = el.oncli ...

  3. 编写函数求整形数组a中存储的m个不重复的整数的第k大的整数(其中m>=1,1<=k<=m)很简单的一个思路是酱紫的:管他辣么多干啥,上来一把排序然后直接得答案

    /** * @author:(LiberHome) * @date:Created in 2019/2/28 20:38 * @description: * @version:$ *//*编写函数求整 ...

  4. BASE64和图片之间的互相转换

    package com.test.demo; import java.io.FileInputStream; import java.io.FileOutputStream; import java. ...

  5. gui小计算器的程序写法

    import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.sw ...

  6. oracle日期格式化

    TO_CHAR(t.CAMERA_CREAT_TIME, 'YYYY-MM-DD HH24:MI:SS') as point_registerdate,TO_CHAR(t.CAMERA_MODIFY_ ...

  7. python练习题-day15

    1.请利用filter()过滤出1~100中平方根是整数的数,即结果应该是: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 2.列表按照其中每一个值的绝对值排序 li ...

  8. wordpress调用the_excerpt()不带<p>标签

    我们知道wordpress调用摘要内容用<?php the_excerpt(); ?>就可以,但是它会自动添加一个p标签,例如<p>这里是description</p&g ...

  9. 20165330 2017-2018-2 《Java程序设计》第7周学习总结

    课本知识总结 第十一章 JDBC与MySQL数据库 安装XAMPP软件及启动MySQL 下载链接:XAMPP 安装步骤:参考教程xampp新手学习指引(windows示例) 启动MySQL:打开系统c ...

  10. int bool 字符串 列表 字典 集合

    1.int和bool 输出i的最大二进制位数inti = 1000 print(i.bit_length()) 2. str int bool list set dict  tuple 相互转换 pr ...