以下纯属个人见解,若有更好的意见,请写下来,共同进步
发现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程序设计-JavasScript类型之undefined.pdf》主要探讨的是JavaScript中的Undefined类型及其使用。 首先,Undefined类型只有一个值,那就是undefined。当我们在JavaScript中使用`var`关键字声明...
在JavaScript中,Undefined类型有三种情况: 1. 变量未初始化时,typeof返回类型为undefined。例如: ``` var oTemp; alert(typeof oTemp); // outputs "undefined" ``` 2. 变量未定义时,typeof返回类型为...
Undefined 类型是 JavaScript 中的一种基本数据类型,表示变量未被定义或未被初始化。Undefined 类型只有一个值,即 undefined。当我们使用 var 声明变量但是未对其进行初始化时,该变量的值就是 undefined。 例如...
JavaScript是一种动态类型的语言,这意味着变量可以存储不同类型的值,包括字符串、数字、布尔值、对象、数组、null和undefined。在处理这些值时,有时我们需要将一种数据类型转换成另一种,以便进行特定的操作。...
Undefined类型表示一个变量已声明但未被初始化,而null类型则表示一个空对象指针。接下来,我将详细解释这两者的区别和它们在JavaScript中的表现。 首先,我们要了解Undefined的含义。当我们声明一个变量但没有给它...
但是在javascript中,怎么检查一个值是否为undefined呢? 简单来说,在现代浏览器中,你可以安全的比较变量是否为undefined if (name === undefined) {...} 一些人反对直接使用undefined变量进行比较,因为在旧的...
在 JavaScript 中,常用的数据类型有七种:数字(Number)、字符串(String)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)和未定义(Undefined)。 数字(Number)类型: * 在 JavaScript 中,...
JavaScript提供了多种数据类型,包括基本和复合类型: 1. **基本数据类型**: - **数字(Numbers)**:整数和浮点数,如123,120.50。 - **字符串(Strings)**:文本字符序列,如"This text string",可以用单...
在JavaScript编程中,理解基本类型和引用类型的区别非常重要,因为这关系到变量的存储、操作以及内存管理等核心概念。在给定的内容中,首先介绍了JavaScript中的基本数据类型和引用数据类型的定义、区别和联系,并...
在JavaScript编程中,正确理解和获取`undefined`值是至关重要的,因为这直接影响到代码的健壮性和可维护性。在某些情况下,我们可能需要确保一个变量确实为`undefined`,而不是其他任何值,以进行有效的条件检查。...
if (reValue== undefined){ alert(“undefined”); } 发现判断不出来,最后查了下资料要用typeof 方法: 代码如下: if (typeof(reValue) == “undefined”) { alert(“undefined”); } ...
JavaScript中undefined和null的区别 JavaScript两个表示”无”的值:undefined和null。我在平时只是null用的多一点,undefined只是在报错中经常遇到。下面针对这两个数据类型的异同做一下详细的比较。 1.undefined和...
JavaScript 数据类型是编程语言的基础,理解它们至关重要。在JavaScript中,数据类型分为两种主要类别:基本数据类型(也称为原始数据类型)和引用数据类型。 基本数据类型包括五种: 1. **String**:字符串类型,...
JavaScript 是一种广泛用于Web开发的动态编程语言,其数据类型是理解其核心概念的关键。在JavaScript中,数据类型分为两大类:基本数据类型和引用数据类型。基本数据类型包括字符串(String)、数字(Number)、布尔...
基本数据类型有数值数据类型、字符串数据类型、逻辑数据类型以及undefined和 null 两个特殊的数据类型。在数值数据类型中,还有NaN等特殊值。JavaScript 是一种松散类型、动态类型的语言,在声明变量时无需指定数据...
一般的程序语言,表示空的只有null,但javascript的设计者Brendan Eich却设计了一个undefined,这无疑增加了程序复杂度,但这样做也是有一定原因的。本文将详细介绍javascript中的undefined和null 历史原因 ...
JavaScript 类型系统中,`undefined` 和 `null` 是两种重要的原始值,它们各自具有特定的含义和用途。本文将深入探讨这两种类型的起源、差异、使用场景以及类型转换。 首先,`undefined` 在 JavaScript 中主要表示...
在JavaScript编程语言中,`undefined` 和 `null` 是两种特殊的值,它们在某些方面具有相似性,但也存在明显的差异。这两个概念对于理解和编写健壮的JavaScript代码至关重要,特别是对于那些处理变量状态和数据类型的...
JavaScript 数据类型转换详解 JavaScript 中有多种数据类型,包括数值类型、字符串类型、布尔类型等。这些类型之间可以进行转换,以下是 JavaScript 中最常用的数据类型转换方法。 一、转为字符串 在 JavaScript ...