JavaScript数据类型

JavaScript 数据类型

根据[ECMA-262]的定义,JavaScript共有七种数据类型:

Undefined、Null、Boolean、String、Symbol、Number、Object。

注意:数组和函数都不是数据类型,他们是一种特殊的Object

JavaScript是一种弱类型语言。程序在变量赋值时,JavaScript引擎会自动对值进行判断并设定类型。

七种数据类型介绍

**类型一:**Undefined

Undefined类型的值只有一个:undefined。变量如果声明后未赋值,其值默认等于undefined。

let foo;
typeof foo; // undefined

类型二:Null

Null类型的值只有一个:null,一个表示空的对象。

类型三:Boolean

Boolean类型用于表示一个逻辑实体,包含两个值:true和false。

类型四:String

用于表示由零个或多个由UTF-16编码的字符序列组成的字符串。通常用单引号’'或双引号""包裹来表示。

类型五:Symbol

Symbol类型的值是唯一的且不可更改的。

Symbol类型的值可以作为对象的属性使用,好处是能避免属性名冲突引起的属性覆盖问题。

类型六:Number

Number类型具有18437736874454810627(264-253+3)个值,
表示为双精度64位IEEE 754-2008中的值,采用IEEE标准所指定的二进制浮点数算法。

其中包含三个特殊的值:

正无穷(positive Infinity):+∞。在JS代码中表示为:+Infinity
负无穷 (negative Infinity):-∞。在JS代码中表示为:-Infinity
NAN(Not-a-Number):使用9007199254740990(2^53-2)表示
其余18437736874454810624 (264-253) 个值为有限数(finite numbers),且正负数
对半,即每一个有限正数都对应了一个有限负数。

注:0也是成对出现的。这两个值在程序中被表示为+0 (或0) 和 -0。

类型七:Object

Object类型的值是一些属性的集合。

属性包括属性名和属性值。属性名可以是String类型或Symbol类型,属性值可以是任何数据类型。

let obj = new Object(),
p1 = ‘prop1’,
p2 = new Symbol(‘p2’);

obj[p1] = ‘value1’; //字符串作为属性名
obj[p2] = ‘value2’; //Symbol类型的值作为属性名

使用 typeof 命令判断数据类型

// 判断字符串
typeof ‘hello’ // “string”
// 判断数字
typeof 99 // “number”
// 判断布尔值
typeof true // “boolean”
// 判断对象
typeof {} // “object”
// 判断null
typeof null // “object”
// 判断undefined
typeof undefined // “undefined”
// 判断Symbol值
typeof Symbol(‘hello JS’) // “symbol”

使用typeof判断数据类型并不十分靠谱,比如上面typeof null和typeof {}都返回了"object"。

如果需要判断变量是否为null,应该使用"==="判断:

var foo = null;

typeof foo // “object”
foo === null // true

另外:如果判断变量是否为数组,typeof命令也是不靠谱的,你应该使用Array.isArray()方法判断:

var arr = [1,2,3];

typeof arr // “object”
Array.isArray(arr) // true

上面我们提到数组和函数是一种特殊的Object类型,那是否意味着函数也不能使用typeof判断呢,答案是否定的,typeof对函数进行了"特殊照顾":

var func = function(){
console.log(‘Hello JavaScript’);
};

typeof func // “function”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值