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 相关文章推荐
动态调用CSS文件的JS代码
Jul 29 Javascript
父子窗体间传递JSON格式的数据的代码
Dec 25 Javascript
jquery查找父元素、子元素(个人经验总结)
Apr 09 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
Bootstrap每天必学之媒体对象
Nov 30 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
详解AngularJS 模态对话框
Apr 07 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
Apr 18 Javascript
JS中静态页面实现微信分享功能
Feb 06 Javascript
使用FileReader API创建Vue文件阅读器组件
Apr 03 Javascript
微信小程序 生成携带参数的二维码
Oct 23 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 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
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
2013/06/24 PHP
destoon官方标签大全
2014/06/20 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
Javascript让DEDECMS告别手写Tag
2014/09/01 Javascript
javascript中Function类型详解
2015/04/28 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
总结python爬虫抓站的实用技巧
2016/08/09 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
Python中format()格式输出全解
2019/04/12 Python
安装PyInstaller失败问题解决
2019/12/14 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
深圳茁壮笔试题
2015/05/28 面试题
元旦晚会策划方案
2014/02/18 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL