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 相关文章推荐
让复选框只能选择一项的方法
Oct 08 Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 Javascript
jQuery弹出层插件popShow用法示例
Jan 23 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
Apr 11 jQuery
vue使用 better-scroll的参数和方法详解
Jan 25 Javascript
在vue项目中使用sass的配置方法
Mar 20 Javascript
Angular学习教程之RouterLink花式跳转
May 03 Javascript
详解mpvue实现对苹果X安全区域的适配
Jul 31 Javascript
Node.js API详解之 repl模块用法实例分析
May 25 Javascript
vue实现购物车加减
May 30 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下实现农历日历的代码
2007/03/07 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
php xml常用函数的集合(比较详细)
2013/06/06 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
python单线程实现多个定时器示例
2014/03/30 Python
Django中使用group_by的方法
2015/05/26 Python
python Opencv将图片转为字符画
2021/02/19 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
个人找工作的自我评价
2013/10/17 职场文书
初一地理教学反思
2014/01/16 职场文书
暑期培训随笔感言
2014/03/10 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
2019年最新借条范本!
2019/07/08 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
详解Spring事件发布与监听机制
2021/06/30 Java/Android