`

JavaScript Garden - undefined 和 null

阅读更多

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 来代替。

分享到:
评论

相关推荐

    js判断undefined类型,undefined,null,NaN的区别

    在 JavaScript 中,undefined、null、NaN 是三个经常被混淆的概念,但它们有着不同的含义和用途。今天,我们将深入探讨这三个概念的区别和应用。 undefined 在 JavaScript 中,undefined 是一个基本数据类型,表示...

    JavaScript中undefined和null的区别

    JavaScript中undefined和null的区别 JavaScript两个表示”无”的值:undefined和null。我在平时只是null用的多一点,undefined只是在报错中经常遇到。下面针对这两个数据类型的异同做一下详细的比较。 1.undefined和...

    JavaScript基本类型值-Undefined、Null、Boolean

    在JavaScript中,基本类型值的使用和处理非常重要,了解Undefined、Null和Boolean这三种基本类型值,能够帮助开发者更好地编写逻辑判断和数据验证的代码,为编写高质量的JavaScript程序打下坚实的基础。

    Javascript类型系统之undefined和null浅析

    本文将详细介绍javascript中的undefined和null 历史原因  1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示”无”的值。根据C语言的传统,null被设计成可以自动转为0  但是,JavaScript的设计者...

    js中 关于undefined和null的区别介绍.docx

    在JavaScript编程语言中,`undefined`和`null`是两种不同的数据类型,它们虽然在某些情况下可能被视为等价,但有着本质的区别。了解这两者的差异对于编写健壮的JavaScript代码至关重要。 首先,`undefined`是一种...

    JavaScript教程--从入门到精通.zip

    这包括变量、数据类型(如字符串、数字、布尔值、null和undefined)、操作符(算术、比较、逻辑等)、流程控制(条件语句如if...else,循环结构如for和while)以及函数的使用。理解这些基础,是构建任何JavaScript...

    cookie-garden-helper:在游戏中使您的花园自动化Cookie Clicker

    LoadMod ( 'https://rawgit.com/yannprada/cookie-garden-helper/master/cookie-garden-helper.js' ) ; } ( ) ) ; 这个怎么运作 首先,点击花园/农场底部的“ Cookie Garden Helper ”按钮。 在这里,您可以配置您...

    1.17 JavaScript高级-JSON和DOM操作.pdf

    在 JSON 中,不支持 JavaScript 中的特殊 undefined。 2. JSON 对象 JSON 对象的表示法需要加上双引号,并且不存在赋值运算和分号。例如:`var box = { "name": "Hou", "age": 100 };` 3. JSON 数组 JSON 数组的...

    Javascript教程--从入门到精通【完整版】.zip

    首先,入门阶段通常会介绍JavaScript的基础语法,包括变量、数据类型(如字符串、数字、布尔值、null和undefined)、操作符(算术、比较、逻辑)、流程控制(条件语句if...else、switch,循环语句for、while)以及...

    JavaScript_Garden_CN

    5. **核心概念**: 强调了避免使用`eval`的重要性,解释了`undefined`和`null`的区别,以及自动分号插入机制,这些都是JavaScript编程中容易忽视但至关重要的细节。 6. **其他**: 提及了`setTimeout`和`setInterval`...

    Javascript基础-Javascript学习笔记(一)PDF

    (ECMAScript有五种原始类型:Undefined、Null、Boolean、Number 和String.) 引用值(reference value)是存储在堆(heap)中的对象,也就是说存储的值是一个指针(point),指向存储对象的内存处。(对象,数组函数属于引用...

    JavaScript教程--从入门到精通(PPT精简版)

    本节课程为初学者提供了 JavaScript 的基本概念、特点、优点和编程技术,旨在帮助学习者快速掌握 JavaScript 的基础知识和编程技能。 一、JavaScript 概述 JavaScript 是一种基于对象、事件驱动的编程语言,由 ...

    javascript类型系统——undefined和null全面了解

    本文将详细介绍javascript中的undefined和null 历史原因1995年JavaScript诞生时,最初像Java一样,只设置了null作为表示”无”的值。根据C语言的传统,null被设计成可以自动转为0 但是,JavaScript的设计者Brendan ...

    测试驱动JavaScript开发-Test Driven JavaScript Development-PDF-英文版

    目前仅有的讲JavaScript的测试驱动开发的书,英文版,Amazon书评4星级的好书。

    JavaScript教程--从入门到精通

    2. 数据类型:JavaScript有七种数据类型,包括基本类型(Boolean、Number、String、Null、Undefined、Symbol、BigInt)和引用类型(Object)。 3. 运算符:包括算术运算符、比较运算符、逻辑运算符、赋值运算符等。 ...

    基于HTML、JavaScript、CSS的Garden-App智慧园林设计源码

    该项目是一款基于HTML、JavaScript和CSS开发的智慧园林设计应用程序源码,包含332个文件,其中包括134个HTML文件、115个PNG图片文件、39个JavaScript文件、18个CSS文件、5个XML文件、4个DS_Store文件、4个JPG文件、3...

    廖雪峰-JavaScript教程-PDF版

    - **面向对象**:尽管JavaScript没有传统意义上的类,但它支持基于原型的面向对象编程方式,可以通过构造函数和原型链来实现继承。 - **事件驱动**:JavaScript的核心之一在于处理用户的交互事件,如点击、滑动等。 ...

    JavaScript程序设计-JavasScript类型之undefined.pdf

    JavaScript是一种广泛应用于Web开发的动态脚本语言,其灵活性和弱类型特性使得它在处理数据类型时具有独特的特点。在JavaScript中,类型系统包括多种不同的数据类型,其中一种就是"undefined"。这篇文档《JavaScript...

Global site tag (gtag.js) - Google Analytics