undefined
和 null
JavaScript 有两个表示‘空’的值,其中比较有用的是 undefined
。
undefined
的值
undefined
是一个值为 undefined
的类型。
这个语言也定义了一个全局变量,它的值是 undefined
,这个变量也被称为 undefined
。
但是这个变量不是一个常量,也不是一个关键字。这意味着它的值可以轻易被覆盖。
ES5 提示: 在 ECMAScript 5 的严格模式下,undefined
不再是 可写的了。
但是它的名称仍然可以被隐藏,比如定义一个函数名为 undefined
。
下面的情况会返回 undefined
值:
- 访问未修改的全局变量
undefined
。
- 由于没有定义
return
表达式的函数隐式返回。
-
return
表达式没有显式的返回任何内容。
- 访问不存在的属性。
- 函数参数没有被显式的传递值。
- 任何被设置为
undefined
值的变量。
处理 undefined
值的改变
由于全局变量 undefined
只是保存了 undefined
类型实际值的副本,
因此对它赋新值不会改变类型 undefined
的值。
然而,为了方便其它变量和 undefined
做比较,我们需要事先获取类型 undefined
的值。
为了避免可能对 undefined
值的改变,一个常用的技巧是使用一个传递到匿名包装器的额外参数。
在调用时,这个参数不会获取任何值。
var undefined = 123;
(function(something, foo, undefined) {
// 局部作用域里的 undefined 变量重新获得了 `undefined` 值
})('Hello World', 42);
另外一种达到相同目的方法是在函数内使用变量声明。
var undefined = 123;
(function(something, foo) {
var undefined;
...
})('Hello World', 42);
这里唯一的区别是,在压缩后并且函数内没有其它需要使用 var
声明变量的情况下,这个版本的代码会多出 4 个字节的代码。
译者注:这里有点绕口,其实很简单。如果此函数内没有其它需要声明的变量,那么 var
总共 4 个字符(包含一个空白字符)
就是专门为 undefined
变量准备的,相比上个例子多出了 4 个字节。
null
的用处
JavaScript 中的 undefined
的使用场景类似于其它语言中的 null,实际上 JavaScript 中的 null
是另外一种数据类型。
它在 JavaScript 内部有一些使用场景(比如声明原型链的终结 Foo.prototype = null
),但是大多数情况下都可以使用 undefined
来代替。
分享到:
相关推荐
JavaScript 类型系统中的 `undefined` 和 `null` 是两种特殊的原始值,它们分别代表不同的概念。在 JavaScript 中,每个变量都有一个类型,当变量未初始化或引用的对象不存在时,就会出现 `undefined` 或 `null`。 ...
JavaScript中的基本类型值是ECMAScript语言规范中的核心概念,它们包括Undefined、Null、Boolean、Number和String五种。这些类型被认为是简单数据类型,因为它们的值直接存储在栈内存中,而不是像复杂数据类型(如...
本文将详细介绍javascript中的undefined和null 历史原因 1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示”无”的值。根据C语言的传统,null被设计成可以自动转为0 但是,JavaScript的设计者...
在JavaScript编程语言中,`undefined`和`null`是两种不同的数据类型,它们虽然在某些情况下可能被视为等价,但有着本质的区别。了解这两者的差异对于编写健壮的JavaScript代码至关重要。 首先,`undefined`是一种...
LoadMod ( 'https://rawgit.com/yannprada/cookie-garden-helper/master/cookie-garden-helper.js' ) ; } ( ) ) ; 这个怎么运作 首先,点击花园/农场底部的“ Cookie Garden Helper ”按钮。 在这里,您可以配置您...
5. **核心概念**: 强调了避免使用`eval`的重要性,解释了`undefined`和`null`的区别,以及自动分号插入机制,这些都是JavaScript编程中容易忽视但至关重要的细节。 6. **其他**: 提及了`setTimeout`和`setInterval`...
本节课程为初学者提供了 JavaScript 的基本概念、特点、优点和编程技术,旨在帮助学习者快速掌握 JavaScript 的基础知识和编程技能。 一、JavaScript 概述 JavaScript 是一种基于对象、事件驱动的编程语言,由 ...
原始类型有数字(Number)、字符串(String)、布尔值(Boolean)、未定义(undefined)、空(null)和Symbol。复合类型则主要指对象(Object),包括数组(Array)、函数(Function)等。 - **数字(Number)**:用于表示整数和...
在JavaScript编程语言中,`undefined` 和 `null` 是两种特殊的数据类型,它们都表示“没有值”,但具有不同的含义和使用场景。了解这两者的差异对于编写健壮的JavaScript代码至关重要。 首先,让我们来明确两者的...
本文将详细介绍javascript中的undefined和null 历史原因1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示”无”的值。根据C语言的传统,null被设计成可以自动转为0 但是,JavaScript的设计者Brendan ...
目前仅有的讲JavaScript的测试驱动开发的书,英文版,Amazon书评4星级的好书。
2. 数据类型:JavaScript有七种数据类型,包括基本类型(Boolean、Number、String、Null、Undefined、Symbol、BigInt)和引用类型(Object)。 3. 运算符:包括算术运算符、比较运算符、逻辑运算符、赋值运算符等。 ...
该项目是一款基于HTML、JavaScript和CSS开发的智慧园林设计应用程序源码,包含332个文件,其中包括134个HTML文件、115个PNG图片文件、39个JavaScript文件、18个CSS文件、5个XML文件、4个DS_Store文件、4个JPG文件、3...
- **面向对象**:尽管JavaScript没有传统意义上的类,但它支持基于原型的面向对象编程方式,可以通过构造函数和原型链来实现继承。 - **事件驱动**:JavaScript的核心之一在于处理用户的交互事件,如点击、滑动等。 ...
在JavaScript编程语言中,Undefined和null是两个基本数据类型,虽然它们听起来很相似,但实际上它们有着明显的区别。Undefined类型表示一个变量已声明但未被初始化,而null类型则表示一个空对象指针。接下来,我将...
JavaScript是一种广泛应用于Web开发的动态脚本语言,其灵活性和弱类型特性使得它在处理数据类型时具有独特的特点。在JavaScript中,类型系统包括多种不同的数据类型,其中一种就是"undefined"。这篇文档《JavaScript...
"JavaScript Undefined、Null类型和NaN值区别" JavaScript 中的Undefined、Null和NaN是三个特殊的值,经常被混淆和误解,本文将详细介绍这三个值的定义、区别和使用场景。 Undefined类型 Undefined类型只有一个值...
在JavaScript编程语言中,Null和Undefined是两种不同的原始值,它们在特定场景下有特定的含义,有时也会引起初学者的困惑。理解这两者之间的差异是编写健壮JavaScript代码的关键。 首先,Undefined类型是一个特殊的...
js基础布尔值、undefined、null、运算符、日期