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中常见陷阱小结
Apr 27 Javascript
判断滚动条到底部的JS代码
Nov 04 Javascript
利用javascript打开模态对话框(示例代码)
Jan 11 Javascript
JavaScript function 的 length 属性使用介绍
Sep 15 Javascript
angularjs基础教程
Dec 25 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
Aug 21 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
Nov 26 Javascript
详解angularjs实现echart图表效果最简洁教程
Nov 29 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
Dec 05 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
Dec 28 Javascript
Vue下路由History模式打包后页面空白的解决方法
Jun 29 Javascript
使用js实现一个简单的滚动条过程解析
Sep 10 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
一个数据采集类
2007/02/14 PHP
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
php批量修改表结构实例
2017/05/24 PHP
js类型检查实现代码
2010/10/29 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
jquery 操作两个select实现值之间的互相传递
2014/03/07 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Python使用贪婪算法解决问题
2019/10/22 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
土建专业大学生自荐信范文
2014/04/09 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
公司保洁员岗位职责
2015/02/13 职场文书
转变工作作风心得体会
2016/01/23 职场文书
python中的被动信息搜集
2021/04/29 Python
Python实现自动玩连连看的脚本分享
2022/04/04 Python