JavaScript数据类型

本文深入探讨了ECMAScript中的六种数据类型:Undefined、Null、Boolean、Number、String和Object,详细解释了每种类型的特点及如何使用。同时介绍了typeof操作符的使用,以及如何通过Boolean()函数和isNaN()函数进行类型转换和检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ECMAScript 中有5 种简单数据类型(也称为基本数据类型):UndefinedNullBooleanNumber
String。还有1 种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的。ECMAScript
不支持任何创建自定义类型的机制,而所有值最终都将是上述6 种数据类型之一。乍一看,好像只有6
种数据类型不足以表示所有数据;但是,由于ECMAScript 数据类型具有动态性,因此的确没有再定义
其他数据类型的必要了。

typeof操作符:检测给定变量的数据类型

对一个值使用typeof 操作符可能返回下列某个字符串:

  • "undefined"——如果这个值未定义;
  • "boolean"——如果这个值是布尔值;
  • "string"——如果这个值是字符串;
  • "number"——如果这个值是数值;
  • "object"——如果这个值是对象或null;
  • "function"——如果这个值是函数。

1、Undefined类型

Undefined 类型只有一个值,即特殊的undefined。在使用var 声明变量但未对其加以初始化时,
这个变量的值就是undefined,例如:
var message;
alert(message == undefined); //true

2、Null类型

Null 类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看,null 值表
示一个空对象指针,而这也正是使用typeof 操作符检测null 值时会返回"object"的原因,如下面
的例子所示:
var car = null;
alert(typeof car); // "object"

实际上,undefined 值是派生自null 值的,因此ECMA-262 规定对它们的相等性测试要返回true:
alert(null == undefined); //true

3、Boolean类型

Boolean 类型是ECMAScript 中使用得最多的一种类型,该类型只有两个字面值:true 和false。

需要注意的是,Boolean 类型的字面值true 和false 是区分大小写的。也就是说,True 和False
(以及其他的混合大小写形式)都不是Boolean 值,只是标识符。

可以对任何数据类型的值调用Boolean()函数,而且总会返回一个Boolean 值。至于返回的
这个值是true 还是false,取决于要转换值的数据类型及其实际值。

var message = "Hello world!";
var messageAsBoolean = Boolean(message);

数据类型转换为true的值转换为false的值
Booleantruefalse
String任何非空字符串""(空字符串)
Number任何非零数字值(包括无穷大)0和NaN
Object任何对象null
Undefined不适用undefined

 

 

 

 

 

 

 

4、Number类型

var intNum = 55; // 十进制整数

var octalNum1 = 070; // 八进制的56  `第一位必须是零(0)

var hexNum1 = 0xA; // 十六进制的10  `前两位必须是0x

var floatNum2 = 0.1; // 浮点数值

NaN,即非数值(Not a Number)是一个特殊的数值

NaN 本身有两个非同寻常的特点。首先,任何涉及NaN 的操作(例如NaN/10)都会返回NaN,这
个特点在多步计算中有可能导致问题。其次,NaN 与任何值都不相等,包括NaN 本身.

针对NaN 的这两个特点,ECMAScript 定义了isNaN()函数。这个函数接受一个参数,该参数可以
是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接收到一个值之后,会尝试
将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"或Boolean 值。而任何
不能被转换为数值的值都会导致这个函数返回true.

alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10 是一个数值)
alert(isNaN("10")); //false(可以被转换成数值10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值1)

有3 个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。

5、String类型

String 类型用于表示由零或多个16 位Unicode 字符组成的字符序列,即字符串。字符串可以由双
引号(")或单引号(')表示,因此下面两种字符串的写法都是有效的:
var firstName = "Nicholas";
var lastName = 'Zakas';

ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变
某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量

要把一个值转换为一个字符串有两种方式。第一种是使用几乎每个值都有的toString()方法

  • 如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果;
  • 如果值是null,则返回"null";
  • 如果值是undefined,则返回"undefined"。

6、Object类型

ECMAScript 中的对象其实就是一组数据和功能的集合。对象可以通过执行new 操作符后跟要创建
的对象类型的名称来创建。而创建Object 类型的实例并为其添加属性和(或)方法,就可以创建自定
义对象,如下所示:
var o = new Object();

Object 的每个实例都具有下列属性和方法。

  • constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)
    就是Object()。
  • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例
    的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例
    如:o.hasOwnProperty("name"))。
  • isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型(第5 章将讨论原
    型)。
  • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in 语句
    (本章后面将会讨论)来枚举。与hasOwnProperty()方法一样,作为参数的属性名必须以字符
    串形式指定。
  • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
  • toString():返回对象的字符串表示。
  • valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值
    相同。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值