区别Javascript中的Null与Undefined
在JavaScript中存在这样两种原始类型:Null与Undefined。这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined?
Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。
Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
js 代码
var oValue;
alert(oValue == undefined); //output "true"
这段代码显示为true,代表oVlaue的值即为undefined,因为我们没有初始化它。
js 代码
alert(null == document.getElementById(notExistElement));
当页面上不存在id为”notExistElement”的DOM节点时,这段代码显示为”true”,因为我们尝试获取一个不存在的对象。
js 代码
alert(typeof undefined); //output "undefined"
alert(typeof null); //output "object"
第一行代码很容易理解,undefined的类型为Undefined;第二行代码却让人疑惑,为什么null的类型又是Object了呢?其实这是 JavaScript最初实现的一个错误,后来被ECMAScript沿用下来。在今天我们可以解释为,null即是一个不存在的对象的占位符,但是在实际编码时还是要注意这一特性。
js 代码
alert(null == undefined); //output "true"
ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。但是,如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法。
js 代码
alert(null === undefined); //output "false"
alert(typeof null == typeof undefined); //output "false"
使用typeof方法在前面已经讲过,null与undefined的类型是不一样的,所以输出”false”。而===代表绝对等于,在这里null === undefined输出false。
JavaScript相关面试题:1.js垃圾回收机制;2.闭包;3.为什么不建议使用innerHTML;4.null和undefined的区别;5.new 操作符 new 操作符的作用是什么? :作用如下。 (1)创建一个空对象。 (2)由this变量引用该对象。 (3)该对象继承该函数的原型(更改原型链的指向)。 (4)把属性和方法加入到this引用的对象中。 (5)新创建的对象由this引用,最后隐式地返回this, 过程如下: var obj={}; obj._proto_=Base.prototype; Base.cail(obj)
再说 JavaScript 的 null 和 undefined 在 JavaScript 中关于空值的定义会应项目的不同而不同,通常在与后台接口对接的时候,判断数据是否存在需要判断空字符串 、null、undefined。本文带大家再复习一下 null 和 undefined 。
相关文章
- 【javascript编程思维】间隔性与延时性定时器的区别 , 如何停止定时器?
- 【javascript系列】史上最全javascript系列教程(一)
- Prepack——JavaScript代码优化工具
- javascript:在foreach循环完成之后执行一个回调函数
- 【javascript】获取 格式化时间
- 谷歌(Chrome)浏览器调试JavaScript小技巧
- JavaScript:优先级队列的实现案例
- JavaScript算法实现——排序
- JavaScript展开运算符和剩余运算符的区别
- 转载 JavaScript的函数声明与函数表达式的区别
- Web前端学习笔记之JavaScript、jQuery、AJAX、JSON的区别
- javascript必知必会:面象对象编程
- 【JavaScript】标准内置函数 isNaN
- 【JavaScript】打造自己的函数
- 分享一个javascript alert精简框架
- 前端百题斩【008-009】——从JavaScript的代码执行过程到函数执行过程
- JavaScript系列--基础语法(二)
- javascript中apply、call和bind的区别及方法详解
- JavaScript(E5,6) 正则学习总结学习,可看可不看!
- JavaScript子窗口调用父窗口变量和函数的方法
- Javascript中类式继承和原型式继承的实现方法和区别
- JavaScript中判断变量类型最简洁的实现方法以及自动类型转换(#################################)
- JavaScript的toString()和valueOf()区别到底是什么
- JavaScript call和apply的区别
- Javascript 中的神器——Promise
- a href=#与 a href=javascript:void(0) 的区别
- JavaScript加密库Crypto-JS的使用
- 分析内存使用情况 (JavaScript)