我们知道,javascript是一种泛类型的语言。泛类型意味着不必显式定义变量的数据类型。事实上,我们无法在 javascript 上明确地定义数据类型。而只能通过var语句显示声明变量:var myvar;
或这样隐式声明变量:myvar=myvarValue(省略var,在声明的同时初始化)。
javascript有三种基本数据类型(字符串、数值、布尔 ),两种引用数据类型(对象、数组)和两种特殊数据类型(Null 、Undefined )。对于基本数据类型和引用数据类型我们很好理解。对于特殊数据类型Null和Undefined,常常会引起我们的一些疑惑。
在 Javascript 中数据类型 Null 只有一个值:null。如果一个变量的值为null ,那么表示该变量没有保存有效的数、字符串、Boolean、数组或对象。因此,我们可以通过给一个变量赋 null 值来清除变量的内容。
考查下面的代码:
function test1()
{
var a=null;
alert("typeof(a):"+typeof(a));
alert("a==0:"+(a==0));
}
结果显示:typeof(null)返回的对象类型为Object,而非类型null。这点潜在的混淆是为了向下兼容。同时,在 Javascript 中,null 与 0 不相等。
如果已声明了一个变量但还没有初始化,那么该变量的值就是 undefined。
如下情况使返回 undefined 值:
1、对象属性不存在;
2、声明了变量但从未赋值。
//注意:很多人常犯的一个错误是:当他定义一个变量的时候未初始化,想当然地认为该变量的默认值为数字0字符串""。
我们在javascript中如何判断一个变量是否存在,可以使用如下方法:
function test2()
{
var a;
alert(typeof(a)==undefined);//false
alert(typeof(a)=="undefined");//true
alert(a==undefined);//true
}
//注意:我们可以通过与undefined做比较测试一个变量是否初始化,但不能通过与 undefined 做比较来测试一个变量是否存在,而只能通过typeof(variable)=="undefined"来判断!
下面的例子将证明我的这一提示的正确性:
function test3()
{
var a;
//alert(b==undefined);//出现错误:'b'未定义
alert(typeof(b)=="undefined");//true
}
undefined 值与null做比较,考查下面的代码:
<script language="javascript">
function myObject(prop1,prop2)
{
this.prop1=prop1;
this.prop2=prop2;
}
var myObj=new myObject(null,"test");
alert("myObj.prop1==null:"+(myObj.prop1==null));
alert("myObj.prop1==undefined:"+(myObj.prop1==undefined));
alert("myObj.prop2==undefined:"+(myObj.prop2==undefined));
alert("myObj.prop3==undefined:"+(myObj.prop3==undefined));
var myobjProps="";
for(prop in myObj)
myobjProps+=prop+",";
alert("myObject的属性有:"+myobjProps);
alert("myObject.prop3 exists?:"+(("prop3" in myObj)?"YES":"NO"));
//要检查一个对象属性是否存在,可以in 运算符。
</script>
总结:undefined 值与null做比较,如下情况时,比较的结果为 true:
1、属性 myObj.prop1 包含null 值;
2、属性 myObj.prop3 不存在。
分享到:
相关推荐
- **变量与数据类型**:书中详细讲解了JavaScript中的var关键字、let和const声明变量的方式,以及基本数据类型(如字符串、数字、布尔值、null和undefined)和复杂数据类型(对象和数组)。 2. **控制流**: - **...
ECMAScript 中有 5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和 String。还有 1种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的。ECMAScript 不支持任何创建...
在这份"JavaScript程序设计课件:数据类型转换"中,主要讲解了如何在JavaScript中进行数据类型的转换,主要包括获取数据类型的方法以及三种主要的数据类型转换:字符串转换、数字转换和布尔型转换。 首先,了解数据...
在 JavaScript 中,undefined 是一个基本数据类型,表示变量未被声明或未被赋值。例如,变量 a 未被声明时,typeof a 将返回 "undefined"。需要注意的是,undefined 不是一个常量,可以被赋值为其他值。 在判断一个...
但是,本文将更多聚焦独特的原始数据类型Null和Undefined,是什么让他们如此相似,却又似是而非。 一、理解Null和Undefined 在JavaScript中,null是字面量同时也是语言中的关键字,用来表示无法识别的对象值。...
- **字面量**: 字面量是表示固定值的简单数据项,如数字、字符串、布尔值、null、undefined等。 - **标识符与保留字**: 标识符用于命名变量、函数等;保留字则是一些具有特殊意义的单词,不能用作标识符。 ##### 3....
JavaScript中Null与Undefined的区别解析主要涉及两种特殊数据类型:Null和Undefined。这两种类型是JavaScript中的原始类型,它们经常会使开发者混淆,尤其是在变量的赋值和比较操作中。本文将通过多个实例,详细解释...
在 JavaScript 中有 5 种不同的可以包含值的数据类型: ● string ● number ● boolean ● object ● function 有 6 种类型的对象: ● Object ● Date ● Array ● String ● Number ● Boolean 以及 2 种不能包含...
下面针对这两个数据类型的异同做一下详细的比较。 1.undefined和null在if语句中,都会被自动转为false,相等运算符直接报告两者相等。 !null==!undefined==true 2.null表示”没有对象”,即该处不应该有值。典型用法...
与 `undefined` 相比,`null` 是一个表示“空值”的关键字,它被设计为一个空对象指针,尽管在 JavaScript 中它的类型标识为 `'object'`。这是一个历史遗留问题,因为在 JavaScript 最初的设计中,`null` 被认为是一...
- **数据类型**:JavaScript支持多种基本数据类型,包括数字(Number)、字符串(String)、布尔值(Boolean)、空(null)、未定义(undefined)以及新的数据类型Symbol(从ES6开始引入)。 - **控制结构**:JavaScript提供...
JavaScript是一种广泛用于网页和网络应用的轻量级脚本语言,尤其在前端开发中起着核心作用。在理解和编写JavaScript代码时,...希望这些详细解释能帮你理清JavaScript数据类型的概念,让你在编写代码时更加得心应手。
本教程“头歌教学实践平台 Web前端开发基础 JavaScript 学习手册二:JS 数据类型”深入浅出地介绍了JavaScript中的各种数据类型,这对于理解代码逻辑和优化性能至关重要。 在JavaScript中,数据类型主要分为两大类...
首先,介绍了JavaScript的基本数据类型(undefined、null、boolean、number、bigint、string、symbol)和object类型(Array、Date、RegExp等)。接着,解释了函数的声明、表达式、立即执行函数和作用域。随后,详细...
以下是对JavaScript中数据类型转换的详细说明: 1. `parseInt()` 函数:这个函数用于将字符串转化为整型。它会尝试解析字符串,从开头开始找到第一个数字,并将其转换为整数。如果字符串的第一位不是数字,`...
JavaScript支持以下几种基本的数据类型: - `undefined`:表示未定义的值。 - `null`:表示空或没有任何值的对象。 - `boolean`:布尔型,值为`true`或`false`。 - `number`:数值型,包括整数和浮点数。 - `bigint...
基本数据类型有数值数据类型、字符串数据类型、逻辑数据类型以及undefined和 null 两个特殊的数据类型。在数值数据类型中,还有NaN等特殊值。JavaScript 是一种松散类型、动态类型的语言,在声明变量时无需指定数据...
- **null与undefined**:`null`表示“没有对象”的值,而`undefined`则表示一个声明了但尚未被赋值的变量。 - **变量声明**:使用`var`、`let`或`const`关键字来声明变量,其中`let`和`const`是ES6引入的新特性,...