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 相关文章推荐
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
Feb 27 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
Dec 19 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
Dec 26 Javascript
jquery 获取表单元素里面的值示例代码
Jul 28 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
Aug 19 Javascript
javascript实现画不相交的圆
Apr 07 Javascript
JavaScript运动减速效果实例分析
Aug 04 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
Jul 04 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
Jul 26 Javascript
Vue-component全局注册实例
Sep 06 Javascript
微信小程序开发实现的IP地址查询功能示例
Mar 28 Javascript
详解服务端预渲染之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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
MYSQL 小技巧 -- LAST_INSERT_ID
2009/11/24 PHP
PHP实现利用MySQL保存session的方法
2014/08/23 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
2013/04/01 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
Javascript实现时间倒计时效果
2017/07/15 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
vue权限管理系统的实现代码
2019/01/17 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
六行python代码的爱心曲线详解
2019/05/17 Python
django框架实现一次性上传多个文件功能示例【批量上传】
2019/06/19 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
HTML5计时器小例子
2013/10/15 HTML / CSS
技术总监的工作职责
2013/11/13 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
团队精神的演讲稿
2014/05/14 职场文书
银行求职自荐信
2014/06/30 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
出纳试用期自我评价
2015/03/10 职场文书