`
percy30856
  • 浏览: 134448 次
  • 性别: 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和null的区别

    理解javascript中undefined和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` 是两种特殊的原始值,它们分别代表不同的概念。`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数据类型

    Undefined 类型是 JavaScript 中的一种基本数据类型,表示变量未被定义或未被初始化。Undefined 类型只有一个值,即 undefined。当我们使用 var 声明变量但是未对其进行初始化时,该变量的值就是 undefined。 例如...

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

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

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

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

    JavaScript中Null与Undefined的区别解析

    JavaScript中Null与Undefined的区别解析主要涉及两种特殊数据类型:Null和Undefined。这两种类型是JavaScript中的原始类型,它们经常会使开发者混淆,尤其是在变量的赋值和比较操作中。本文将通过多个实例,详细解释...

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

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

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

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

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

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

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

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

    Javascript类型转换的规则实例解析

    JavaScript类型转换是编程中非常重要的一个概念,它描述了在运算过程中,不同数据类型之间的自动或手动转换行为。JavaScript语言是动态类型的,这意味着你可以在运行时改变变量所存储值的类型,而这正是类型转换的...

    1901_姓名_01JavaScript数据类型.docx

    本文将深入探讨JavaScript中的数据类型,包括基本数据类型和引用数据类型,以及如何进行强制类型转换。 首先,我们要了解JavaScript中的数据类型主要有六种: 1. **字面量、变量和标识符**: - **字面量**是指在...

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

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

Global site tag (gtag.js) - Google Analytics