javascrit中undefined和null的区别详解


Posted in Javascript onApril 07, 2019

1、Undefined

Undefined 类型只有一个值,即特殊的undefined。根据工作中总结,只要有这几种情况下会出现undefined。

1.定义变量,但是没有初始化时,如var a;

2.调用某个函数时,实参个数小于形参个数时,未实参化的形参在函数调用过程中的值是undefined;

3.调用某个对象还没有添加的属性时,也会返回undefined;

var obj={} 
  console.log(obj.name);//undefined

4.调用某个没有返回值的函数,也会返回undefined;

function Person(name,age){
  this.name=name;
  this.age=age;
  }
  var p=Person("李四",23);//此时的p=undefined;

5.对 未初始化的变量 执行 typeof 操作符会返回 undefined 值;

6.对 未声明的变量 执行 typeof 操作符同样也会返回 undefined 值。

var message; // 这个变量声明之后默认取得了 undefined 值 
  //未初始化的变量
  alert(typeof message);  // "undefined" 
  //未申明的变量
  alert(typeof age);   // "undefined"

2、Null 类型

是第二个只有一个值的数据类型,这个特殊的值是 null。从逻辑角度来看,null值表示一个空对象指针,要意在保存对象的变量还没有真正保存对象。而这也正是使用 typeof 操作符检测 null值时会返回"object"的原因。这几种情况下会出现null的情况

1、手动设置变量的值或者对象某一个属性值为null(在初始化对象时,手动设置对象为null。在作用域中不再需要使用某个对象时,把null赋值给那个变量解除引用,以释放内存)

2、在javascript的DOM元素获取中,如果没有获取到指定的元素对象,结果一般是null。

var d=document.getElementById("d");
 console.log(d);//当没有id为"d"的标签时返回null

3、Object.prototype._proto_的值也是null。(每一个对象都有__proto__属性,指向对应的构造函数的prototype属性,但是因为Object是所有类的基类,其没有对应的构造函数,所有Object.prototype._proto_值为空);

console.log("a".__proto__);
  //指向的是String的prototype属性
  //String {"", length: 0, constructor: ƒ, anchor: ƒ, big: ƒ, blink: ƒ, …}

4、在正则捕获的时候,如果没有捕获到结果,默认也是null。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Chrome扩展页面动态绑定JS事件提示错误
Feb 11 Javascript
jQuery针对各类元素操作基础教程
Aug 29 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
Oct 09 Javascript
Bootstrap如何创建表单
Oct 21 Javascript
详解Angular2 之 结构型指令
Jun 21 Javascript
jquery实现左右轮播图效果
Sep 28 jQuery
防止Layui form表单重复提交的实现方法
Sep 10 Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
Dec 12 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
Jul 28 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
Jan 29 Javascript
vue+springboot实现登录验证码
May 27 Vue.js
详解服务端预渲染之Nuxt(介绍篇)
Apr 07 #Javascript
vue设计一个倒计时秒杀的组件详解
Apr 06 #Javascript
js字符串处理之绝妙的代码
Apr 05 #Javascript
微信小程序自定义导航栏实例代码
Apr 05 #Javascript
Node.js事件的正确使用方法
Apr 05 #Javascript
利用Node.js如何实现文件循环覆写
Apr 05 #Javascript
详解JavaScript栈内存与堆内存
Apr 04 #Javascript
You might like
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
PHP 图片处理
2020/09/16 PHP
JavaScript this 深入理解
2009/07/30 Javascript
js 得到文件后缀(通过正则实现)
2013/07/08 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
温习Javascript基础语法之词法结构
2016/05/31 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
原生和jQuery的ajax用法详解
2017/01/23 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
2019/07/20 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
python获取android设备的GPS信息脚本分享
2015/03/06 Python
Python操作MongoDB详解及实例
2017/05/18 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
Python中dict和set的用法讲解
2019/03/28 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
生物化工工艺专业应届生求职信
2013/10/08 职场文书
应届生财务会计求职信
2013/11/05 职场文书
学校师德师风自我剖析材料
2014/09/29 职场文书
经销商会议开幕词
2016/03/04 职场文书
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python