`
percy30856
  • 浏览: 135171 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

说说 javascript undefined类型

阅读更多

以下纯属个人见解,若有更好的意见,请写下来,共同进步

 

发现ECMAScript中的undefined类型和null类型很有意思。。。。。他们是ECMAScript中唯一只有一个值的类型,而且一般情况下,在代码调试中,一旦提示该类型,都很让人纠结和蛋疼,所以这里就爆一下他们的内幕。。。

 

首先,Undefined类型和null类型都是原始类型,也就是说,声明为该类型的值为直接存放在栈中。

 

undefined类型的值是"undefined",为什么我没有用也是呢,因为前面表示的是类型,后面表示的是它的字面值。

null类型的值是"null",为什么我也没有用也是呢,因为前面表示的也是类型,后面表示的也是它的字面值。

 

下面说下变量声明:

undefined:

声明后未初始化的变量,和声明为undefined类型的变量当进行==判断的时候是相等的,进行typeof运算后,他们的类型也都是undefined,值也相同。例如:

 

var u1;

alert(u1==undefined)

结果:true

 

但是,未声明的变量和undefined类型不太一样,虽然用typeof运算出来他们都是undefined类型,例如:

alert(u2==undefined)

结果:报错,并提示u2未定义

 

而用alert(typeof(u2))

结果:undefined

 

说明:未声明的变量类型为undefined,但值并不是undefined。typeof运算只运算类型。而==运算区分类型和值,W3C说的是除了typeof运算符,其他运算符只能用于声明、定义过的变量。

 

 

W3C说undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。

注意:我这里使用的undefined和null都是小写,因为在javascript中,是区分大小写的,例如:

 

if(NULL == undefined){
alert("相等")
}

结果:提示NULL未定义,这里把NULL当成了一个变量,而undefined是一个原始类型值,就好像number。

 

if(NULL == undefined){
alert("相等")
}

结果:相等。

 

 

null:

使用typeof运算null会发现结果是object,这个结果让人很不满意,如果按照正常的逻辑思维,undefined类型用typeof运算的时候就也应该是object。这里W3C说 这是JavaScript 最初实现中的一个错误,然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符。

 

上面说过,undefined实际上时null派生来的,这里我也有几个疑问:

1.如果这样的话,undefined类型的底层实现是不是也是object?使用==运算符运算undefined和null,结果他们是相等的,这说明他们的值和类型都是相同的。那是不是就可以直接推出undefined类型底层实现的时候,类型就是object并且值就是null?

分享到:
评论

相关推荐

    JavaScript判断undefined类型的正确方法

    使用typeof判断undefined类型是JavaScript编程中推荐的做法,因为它避免了相等比较符可能出现的类型转换问题,可以准确地反映变量是否未定义。对于编程初学者来说,理解和掌握typeof的用法是十分重要的,尤其是在...

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

    这篇文档《JavaScript程序设计-JavasScript类型之undefined.pdf》主要探讨的是JavaScript中的Undefined类型及其使用。 首先,Undefined类型只有一个值,那就是undefined。当我们在JavaScript中使用`var`关键字声明...

    javascript类型系统--undefined和null全面了解_.docx

    JavaScript 类型系统中的 `undefined` 和 `null` 是两种特殊的原始值,它们分别代表不同的概念。在 JavaScript 中,每个变量都有一个类型,当变量未初始化或引用的对象不存在时,就会出现 `undefined` 或 `null`。 ...

    【JavaScript源代码】JavaScript之不可靠的undefined.docx

    这个问题源于JavaScript的动态类型特性和在某些情况下对`undefined`标识符的可修改性。 在JavaScript早期版本(ES5之前),全局变量`undefined`是可以被重新赋值的,这可能导致混淆和错误。例如,以下代码片段展示...

    JavaScript Undefined,Null类型和NaN值区别

    在JavaScript中,Undefined类型有三种情况: 1. 变量未初始化时,typeof返回类型为undefined。例如: ``` var oTemp; alert(typeof oTemp); // outputs "undefined" ``` 2. 变量未定义时,typeof返回类型为...

    Javascript的数据类型转换

    JavaScript是一种动态类型的语言,这意味着变量可以存储不同类型的值,包括字符串、数字、布尔值、对象、数组、null和undefined。在处理这些值时,有时我们需要将一种数据类型转换成另一种,以便进行特定的操作。...

    辨析JavaScript中的Undefined类型与null类型

    Undefined类型表示一个变量已声明但未被初始化,而null类型则表示一个空对象指针。接下来,我将详细解释这两者的区别和它们在JavaScript中的表现。 首先,我们要了解Undefined的含义。当我们声明一个变量但没有给它...

    Javascript中判断一个值是否为undefined的方法详解

    但是在javascript中,怎么检查一个值是否为undefined呢? 简单来说,在现代浏览器中,你可以安全的比较变量是否为undefined if (name === undefined) {...} 一些人反对直接使用undefined变量进行比较,因为在旧的...

    JavaScript数据类型知识点总结及基础类型的使用方法.docx

    在 JavaScript 中,常用的数据类型有七种:数字(Number)、字符串(String)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)和未定义(Undefined)。 数字(Number)类型: * 在 JavaScript 中,...

    javascript数据类型 -JavaScript优势简介及数据类型

    JavaScript提供了多种数据类型,包括基本和复合类型: 1. **基本数据类型**: - **数字(Numbers)**:整数和浮点数,如123,120.50。 - **字符串(Strings)**:文本字符序列,如"This text string",可以用单...

    JavaScript中Null与Undefined的区别解析

    首先,Undefined类型是一个特殊的值,它只有一个值,即`undefined`。在JavaScript中,当声明了一个变量但未对其进行赋值时,该变量的值就会是`undefined`。例如: ```javascript var oValue; alert(oValue == ...

    跟我学习javascript的基本类型和引用类型

    在JavaScript编程中,理解基本类型和引用类型的区别非常重要,因为这关系到变量的存储、操作以及内存管理等核心概念。在给定的内容中,首先介绍了JavaScript中的基本数据类型和引用数据类型的定义、区别和联系,并...

    JavaScript中猎取纯正的undefined的方法_.docx

    在JavaScript编程中,正确理解和获取`undefined`值是至关重要的,因为这直接影响到代码的健壮性和可维护性。在某些情况下,我们可能需要确保一个变量确实为`undefined`,而不是其他任何值,以进行有效的条件检查。...

    JavaScript中undefined和null的区别

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

    1902钟文宇Javascript数据类型总结.docx

    JavaScript 数据类型是编程语言的基础,理解它们至关重要。在JavaScript中,数据类型分为两种主要类别:基本数据类型(也称为原始数据类型)和引用数据类型。 基本数据类型包括五种: 1. **String**:字符串类型,...

    JavaScript 动态网页实例 - 数据类型转换.rar

    基本数据类型有数值数据类型、字符串数据类型、逻辑数据类型以及undefined和 null 两个特殊的数据类型。在数值数据类型中,还有NaN等特殊值。JavaScript 是一种松散类型、动态类型的语言,在声明变量时无需指定数据...

    Javascript类型系统之undefined和null浅析

     一般的程序语言,表示空的只有null,但javascript的设计者Brendan Eich却设计了一个undefined,这无疑增加了程序复杂度,但这样做也是有一定原因的。本文将详细介绍javascript中的undefined和null 历史原因  ...

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

    JavaScript 类型系统中,`undefined` 和 `null` 是两种重要的原始值,它们各自具有特定的含义和用途。本文将深入探讨这两种类型的起源、差异、使用场景以及类型转换。 首先,`undefined` 在 JavaScript 中主要表示...

Global site tag (gtag.js) - Google Analytics