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 相关文章推荐
IE Firefox 使用自定义标签的区别
Oct 15 Javascript
详解支持Angular 2的表格控件
Jan 19 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
Jun 11 Javascript
ionic环境配置及问题详解
Jun 27 Javascript
使用js实现将后台传入的json数据放在前台显示
Aug 06 Javascript
vue根据进入的路由进行原路返回的方法
Sep 26 Javascript
详解vue文件中使用echarts.js的两种方式
Oct 18 Javascript
Node.js JSON模块用法实例分析
Jan 04 Javascript
微信小程序实现时间进度条功能
Nov 17 Javascript
ant-design-vue 实现表格内部字段验证功能
Dec 16 Javascript
koa中间件核心(koa-compose)源码解读分析
Jun 15 Javascript
在Vue中获取自定义属性方法:data-id的实例
Sep 09 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
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
用Apache反向代理设置对外的WWW和文件服务器
2006/10/09 PHP
实用函数2
2007/11/08 PHP
PHP中文分词的简单实现代码分享
2011/07/17 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
Yii2单元测试用法示例
2016/11/12 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
JS继承 笔记
2011/07/13 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
使用jQuery实现动态添加小广告
2017/07/11 jQuery
3种vue组件的书写形式
2017/11/29 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
python关闭windows进程的方法
2015/04/18 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
python做反被爬保护的方法
2019/07/01 Python
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
PAUL HEWITT手表美国站:德国北部时尚生活配饰品牌,船锚元素
2017/11/18 全球购物
学生会主席事迹材料
2014/01/28 职场文书
关键在于落实心得体会
2014/09/03 职场文书
服务整改报告
2014/11/06 职场文书
优秀班集体申报材料
2014/12/25 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS