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 AutoComplete自动完成 的使用方法实例
Mar 19 Javascript
JS实现程序暂停与继续功能代码解读
Oct 10 Javascript
如何在指定的地方插入html内容和文本内容
Dec 23 Javascript
七个很有意思的PHP函数
May 12 Javascript
在Python中使用glob模块查找文件路径的方法
Jun 17 Javascript
基于jQuery实现仿百度首页选项卡切换效果
May 29 Javascript
JQuery遍历元素的父辈和祖先的方法
Sep 18 Javascript
JS 终止执行的实现方法
Nov 24 Javascript
node.js中debug模块的简单介绍与使用
Apr 25 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
Sep 07 Javascript
vue中touch和click共存的解决方式
Jul 28 Javascript
js实现鼠标点击飘爱心效果
Aug 19 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入门源程序
2006/10/09 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
ScrollDown的基本操作示例
2013/06/09 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
python连接mysql实例分享
2016/10/09 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
python交易记录整合交易类详解
2019/07/03 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
python实现FTP循环上传文件
2020/03/20 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
外包公司软件测试工程师
2014/11/01 面试题
MBA推荐信怎么写
2015/03/25 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python