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 相关文章推荐
推荐10个超棒的jQuery工具提示插件
Oct 11 Javascript
jQuery实现带有洗牌效果的动画分页实例
Aug 31 Javascript
JavaScript多并发问题如何处理
Oct 28 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
Dec 03 Javascript
jQuery的deferred对象使用详解
Sep 25 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
Nov 25 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
Dec 26 Javascript
react 应用多入口配置及实践总结
Oct 17 Javascript
详解babel升级到7.X采坑总结
May 12 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
Oct 16 Javascript
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
详解服务端预渲染之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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
简单采集了yahoo的一些数据
2007/02/14 PHP
PHP中的错误处理、异常处理机制分析
2012/05/07 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
js自带函数备忘 数组
2006/12/29 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
vue 解决IOS10低版本白屏的问题
2020/11/17 Javascript
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
详解Python中的正则表达式的用法
2015/04/09 Python
python WindowsError的错误代码详解
2017/07/23 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
python创建学生管理系统
2019/11/22 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
迪拜领先运动补剂零售品牌中文站:Sporter商城
2019/08/20 全球购物
Ruby如何实现动态方法调用
2012/11/18 面试题
生产厂厂长岗位职责
2013/12/25 职场文书
2014年元旦活动方案
2014/02/15 职场文书
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android