JavaScript 数据类型

参考 - 【EC-前端
根据[ECMA-262]的定义,JavaScript共有七种数据类型:

UndefinedNullBooleanStringSymbolNumberObject

注意:数组和函数都不是数据类型,他们是一种特殊的Object
JavaScript是一种弱类型语言。程序在变量赋值时,JavaScript引擎会自动对值进行判断并设定类型。

七种数据类型介绍

类型一:Undefined

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

let foo;
typeof foo; // undefined

类型二:Null

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

类型三:Boolean

Boolean类型用于表示一个逻辑实体,包含两个值:truefalse

类型四:String

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

类型五:Symbol

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

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

类型六:Number

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

其中包含三个特殊的值:

  1. 正无穷(positive Infinity):+∞。在JS代码中表示为:+Infinity
  2. 负无穷 (negative Infinity):-∞。在JS代码中表示为:-Infinity
  3. 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 nulltypeof {}都返回了"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"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

及时当勉励岁月不待人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值