以下纯属个人见解,若有更好的意见,请写下来,共同进步
发现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的区别
使用typeof判断undefined类型是JavaScript编程中推荐的做法,因为它避免了相等比较符可能出现的类型转换问题,可以准确地反映变量是否未定义。对于编程初学者来说,理解和掌握typeof的用法是十分重要的,尤其是在...
这篇文档《JavaScript程序设计-JavasScript类型之undefined.pdf》主要探讨的是JavaScript中的Undefined类型及其使用。 首先,Undefined类型只有一个值,那就是undefined。当我们在JavaScript中使用`var`关键字声明...
JavaScript 类型系统中的 `undefined` 和 `null` 是两种特殊的原始值,它们分别代表不同的概念。`undefined` 主要用于表示变量已经声明但未被赋值的情况,而 `null` 则是一个特意设置的值,通常用来表示一个“空”的...
这个问题源于JavaScript的动态类型特性和在某些情况下对`undefined`标识符的可修改性。 在JavaScript早期版本(ES5之前),全局变量`undefined`是可以被重新赋值的,这可能导致混淆和错误。例如,以下代码片段展示...
在JavaScript中,Undefined类型有三种情况: 1. 变量未初始化时,typeof返回类型为undefined。例如: ``` var oTemp; alert(typeof oTemp); // outputs "undefined" ``` 2. 变量未定义时,typeof返回类型为...
Undefined 类型是 JavaScript 中的一种基本数据类型,表示变量未被定义或未被初始化。Undefined 类型只有一个值,即 undefined。当我们使用 var 声明变量但是未对其进行初始化时,该变量的值就是 undefined。 例如...
Undefined类型表示一个变量已声明但未被初始化,而null类型则表示一个空对象指针。接下来,我将详细解释这两者的区别和它们在JavaScript中的表现。 首先,我们要了解Undefined的含义。当我们声明一个变量但没有给它...
但是在javascript中,怎么检查一个值是否为undefined呢? 简单来说,在现代浏览器中,你可以安全的比较变量是否为undefined if (name === undefined) {...} 一些人反对直接使用undefined变量进行比较,因为在旧的...
JavaScript中Null与Undefined的区别解析主要涉及两种特殊数据类型:Null和Undefined。这两种类型是JavaScript中的原始类型,它们经常会使开发者混淆,尤其是在变量的赋值和比较操作中。本文将通过多个实例,详细解释...
在JavaScript编程中,理解基本类型和引用类型的区别非常重要,因为这关系到变量的存储、操作以及内存管理等核心概念。在给定的内容中,首先介绍了JavaScript中的基本数据类型和引用数据类型的定义、区别和联系,并...
在JavaScript编程中,正确理解和获取`undefined`值是至关重要的,因为这直接影响到代码的健壮性和可维护性。在某些情况下,我们可能需要确保一个变量确实为`undefined`,而不是其他任何值,以进行有效的条件检查。...
JavaScript 数据类型是编程语言的基础,理解它们至关重要。在JavaScript中,数据类型分为两种主要类别:基本数据类型(也称为原始数据类型)和引用数据类型。 基本数据类型包括五种: 1. **String**:字符串类型,...
基本数据类型有数值数据类型、字符串数据类型、逻辑数据类型以及undefined和 null 两个特殊的数据类型。在数值数据类型中,还有NaN等特殊值。JavaScript 是一种松散类型、动态类型的语言,在声明变量时无需指定数据...
JavaScript类型转换是编程中非常重要的一个概念,它描述了在运算过程中,不同数据类型之间的自动或手动转换行为。JavaScript语言是动态类型的,这意味着你可以在运行时改变变量所存储值的类型,而这正是类型转换的...
本文将深入探讨JavaScript中的数据类型,包括基本数据类型和引用数据类型,以及如何进行强制类型转换。 首先,我们要了解JavaScript中的数据类型主要有六种: 1. **字面量、变量和标识符**: - **字面量**是指在...
JavaScript 类型系统中,`undefined` 和 `null` 是两种重要的原始值,它们各自具有特定的含义和用途。本文将深入探讨这两种类型的起源、差异、使用场景以及类型转换。 首先,`undefined` 在 JavaScript 中主要表示...