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. 【C++ mid-term exerises】

    1. 用掷骰子方式,模拟班级每个学号被随机抽点的概率. (12分) 具体要求如下: (1)设计并实现一个骰子类Dice. ① 数据成员sides表示骰子面数.构造时,指定骰子是6面,8面,还是其它数值 ...

  2. elk-logstash-kibana(三)

    一.修改logstash.yml unzip logstash-6.3.2 vim config/logstash.yml #添加:检查所有ip http.host: "0.0.0.0&qu ...

  3. 四、XML语言学习(2)

    XML约束之DTD 1.XML都是用户自定义标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错.XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束格式良好的X ...

  4. ELK之使用filebeat收集系统数据及其他程序并生成可视化图表

    当您要面对成百上千.甚至成千上万的服务器.虚拟机和容器生成的日志时,请告别 SSH 吧.Filebeat 将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂. 1,安装fileb ...

  5. vue computed的执行问题

    1.在new Vue()的时候,vue\src\core\instance\index.js里面的_init()初始化各个功能 function Vue (options) { if (process ...

  6. odoo配置文件详解

    addons模块的查找路径 addons_path = D:\odoo\Odoo 10.0\server\odoo\addons 超级管理员(用于创建,还原和备份数据库的操作) admin_passw ...

  7. c# Castle Windsor简单例子

    Windsor是Castle的IOC框架.需要用到两个dll(Castle.Core.dll和Castle.Windsor.dll). 1.接口以及接口实现类: public interface IT ...

  8. linux sftp远程上传文件

    1.打开xshell 点击“新建文件传输”,如下图: 中间可能会出现下面的提示框,直接关掉即可: 2.切换到远程你要传输文件的目的地 命令:cd  你的路径 3.切换到本地文件所在目录 命令:lcd ...

  9. Spark mllib多层分类感知器在情感分析中的实际应用

    import org.apache.spark.ml.Pipeline import org.apache.spark.ml.classification.MultilayerPerceptronCl ...

  10. 小程序 showModal content换行

    wx.showModal({ title: '提示', content: '1.该拼团仅支持到指定取货地址自提\r\n2.拼团支付价格为拼团原价,当到达指定阶梯,拼团差价将在3个工作日内退回您的微信账 ...