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 相关文章推荐
jquery中常用的SET和GET$(”#msg”).html循环介绍
Oct 09 Javascript
js判断是否为ie的方法小结
Jan 13 Javascript
js 左右悬浮对联广告特效代码
Dec 12 Javascript
js实现屏幕自适应局部代码分享
Jan 30 Javascript
jquery表单对象属性过滤选择器实例分析
May 18 Javascript
jQuery树控件zTree使用方法详解(一)
Feb 28 Javascript
vue 怎么创建组件及组件使用方法
Jul 27 Javascript
vue仿淘宝订单状态的tab切换效果
Jun 23 Javascript
js生成word中图片处理方法
Jan 06 Javascript
Angular 项目实现国际化的方法
Jan 08 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 Javascript
vue视频播放暂停代码
Nov 08 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
德劲1104的电路分析与改良
2021/03/01 无线电
第1次亲密接触PHP5(2)
2006/10/09 PHP
php 301转向实现代码
2008/09/18 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
JS动画效果代码3
2008/04/03 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
javascript中this关键字详解
2016/12/12 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
python实现在字符串中查找子字符串的方法
2015/07/11 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
营销部内勤岗位职责
2014/04/30 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
青涩记忆观后感
2015/06/18 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
Python 流媒体播放器的实现(基于VLC)
2021/04/28 Python