http://m.studyofnet.com/news/66.html
JS脚本中Null与Undefined的区别
来源:JavaScript学习 发布时间:2013/8/15
JavaScript 中一共有 5 种基本类型,分别是 String、Number、Boolean、Null 和 Undefined 。前 3 种都比较好理解,后面两种就稍微复杂一点。 Null 类型只有一个值,就是 null ; Undefined 类型也只有一个值,即 undefined 。 null 和 undefined 都可以作为字面量(literal)在 JavaScript 代码中直接使用。
null 与对象引用有关系,表示为空或不存在的对象引用。当声明一个变量却没有给它赋值的时候,它的值就是 undefined 。
一、undefined 的值会出现在如下情况:
1、从一个对象中获取某个属性,如果该对象及其 prototype 链 中的对象都没有该属性的时候,该属性的值为 undefined 。
2、一个 function 如果没有显式的通过 return 来返回值给其调用者的话,其返回值就是 undefined 。有一个特例就是在使用new的时候。
3、JavaScript 中的 function 可以声明任意个形式参数,当该 function 实际被调用的时候,传入的参数的个数如果小于声明的形式参数,那么多余的形式参数的值为 undefined 。
二、下面通过一段代码说明两者的区别
JScript 代码 复制
//这段代码显示为true,代表oVlaue的值即为undefined,因为我们没有初始化它。
var oValue;
alert(oValue == undefined); //output "true"
//当页面上不存在id为"notExistElement"的DOM节点时,这段代码显示为"true",因为我们尝试获取一个不存在的对象
alert(null== document.getElementById('notExistElement'));
//第一行代码很容易理解,undefined的类型为Undefined;
//第二行代码却让人疑惑,为什么null的类型又是Object了呢?其实这是JavaScript最初实现的一个错误,后来被ECMAScript沿用下来。在今天我们可以解释为,null即是一个不存在的对象的占位符,但是在实际编码时还是要注意这一特性。
alert(typeof undefined); //output "undefined"
alert(typeofnull); //output "object"
//ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的。
alert(null== undefined); //output "true"
//如果在一些情况下,我们一定要区分这两个值,那应该怎么办呢?可以使用下面的两种方法。
//使用typeof方法在前面已经讲过,null与undefined的类型是不一样的,所以输出"false"。而===代表绝对等于,在这里null === undefined输出false。
alert(null=== undefined); //output "false"
alert(typeofnull==typeof undefined); //output "false"
相关推荐
### JavaScript中null与undefined分析 #### 一、引言 在JavaScript编程语言中,`null`和`undefined`是两个非常基础且重要的概念。虽然它们经常被用来表示“无值”或“空值”,但它们之间还是存在着一些关键性的...
在JavaScript编程语言中,`undefined`和`null`是两种不同的数据类型,它们虽然在某些情况下可能被视为等价,但有着本质的区别。了解这两者的差异对于编写健壮的JavaScript代码至关重要。 首先,`undefined`是一种...
JavaScript中的逻辑AND运算符(&&)是一个非常关键的逻辑操作符,它用于判断两个表达式是否都为真。当使用双和号(&&)时,它遵循短路逻辑,这意味着如果第一个表达式已经能确定结果,那么就不会再评估第二个表达式...
《100-Days-of-JS-and-TS-源码》是一个编程学习资源,主要涵盖了JavaScript(JS)和TypeScript(TS)的基础到高级的知识点。这个压缩包包含了一个持续100天的学习计划,旨在帮助开发者系统地提升在JS和TS领域的技能...
在JavaScript中,基本的数据类型包括字符串、数字、布尔值、null、undefined、对象和Symbol。其中,字符串是不可变的字符序列,可以使用模板字面量来方便地创建和操作;数字包括整数和浮点数,可以用十进制、八进制...
1. **基础语法**:JavaScript的语法结构与C语言家族相似,包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、操作符(算术、比较、逻辑等)以及流程控制语句(如...
它的基础包括变量(var, let, const)、数据类型(如字符串、数字、布尔、null、undefined、对象、数组)、操作符(赋值、比较、逻辑、位运算等)、流程控制(if语句、switch、for、while、do...while循环)以及函数...
- **变量与数据类型**:var、let、const声明变量,区分基本类型(String、Number、Boolean、Null、Undefined、Symbol)和引用类型(Object)。 - **控制流**:if/else条件判断,for/while循环,switch语句,break...
了解变量声明(var、let、const)、数据类型(字符串、数字、布尔、null、undefined、对象等)以及运算符是JavaScript的基础。 2. **DOM操作** Document Object Model(DOM)是HTML和XML文档的结构化表示。...
JavaScript的基础包括变量定义(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、对象、数组、符号和BigInt)以及操作符(算术、比较、逻辑和位运算符)。案例可能涵盖变量的声明和赋值,...
JavaScript是基于ECMAScript标准的,它包含了变量、数据类型(如字符串、数字、布尔值、null和undefined)、操作符(算术、比较、逻辑等)、流程控制(条件语句、循环语句)以及函数等基础概念。理解这些基础知识是...
1. **基础语法**:JavaScript的基础包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、对象、数组、函数等)、操作符(算术、比较、逻辑、位运算等)以及流程控制(条件语句、...
变量是存储数据的地方,JavaScript支持多种数据类型,如字符串、数字、布尔值、null、undefined、对象和符号。操作符用于比较、赋值和计算。语句如条件语句(if...else)、循环(for、while)控制程序流程。函数是一...
首先,JavaScript的基础知识包括变量、数据类型(如字符串、数字、布尔值、null、undefined、对象、数组)、运算符(算术、比较、逻辑、位运算符)、控制结构(条件语句如if...else,循环如for、while、do...while)...
JavaScript的基础语法包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、对象、数组、Symbol和BigInt)以及控制流程语句(如if...else、for、while等)。实例中可能会涵盖如何...
它的核心特性包括变量、数据类型(如字符串、数字、布尔值、对象、null和undefined)、操作符、流程控制(如条件语句、循环)、函数以及对象和数组。其中,函数不仅是可执行的代码块,还可以作为值传递,体现了...
JavaScript,也被称为JS,是一种广泛应用于网页和网络应用的编程语言,主要负责客户端的动态交互。它是ECMAScript规范的实现,由Netscape公司的Brendan Eich在1995年发明,最初用于增强网页的用户体验。尽管名字里有...
它有七种原始数据类型(Boolean、Null、Undefined、Number、String、Symbol(ES6新增)和BigInt(ES10新增)**,以及一种复杂数据类型——Object。理解这些数据类型对于编写高效代码至关重要。 2. **控制结构**:包括...