JS数据类型

JS数据类型

今天我们所讲的JS,是特指ECMAscript。在ECMAscript中,数据类型没有其他强类型语言丰富,ES6之前的数据类型由5种基本数据类型(Undefined, Null, Number, String, Boolean)和一种特殊复杂数据类型构成(Object),在ES6之后,有新增了一种基本数据类型(Symbol)。接下来,我们将对各数据类型做出简介:

基本数据类型

Undefined

Undefined 类型 只有一个唯一值undefined,表示”缺省值”,即此处应该有值存在,但为声明。产生undefined值的场景主要有以下几大典型:

 1. 声明变量但未赋值时
 var variables;   // undefined
 2. 调用为定义的变量或函数使用未声明的参数时
 console.log(myObject); // undefined
 3. 函数没有显示返回值时
 function myFunction(){ } // 此时函数返回值为undefined
 4. 调用对象未声明的属性或方法时
 Object.muchMoney // undefined

而检测Undefined类型,我们使用 typeof (typeof someVarible)去进行类型检查;需要注意,以下两种方式都会返回undefined值,但他们有本质的区别:

var money;
typeof money === 'undefined' // true

typeof house === 'undefined' // true

在此,我们注意到,对于声明未赋值的变量和未声明的变量,typeof都会返回undefined值,但我们在实际开发中,应该注意变量都要赋一个初值,这样,我们就能很好的判断,返回undefined值的变量时由于没有定义而不是没有赋值;

Number

在JS中,并不会想起它强类型语言一样区分数值类型,即整数和浮点数在JS中是没有区别的,它们均以双精度64位格式储存。但在具体实现时,整型的数字值通常被当做32位整型。

整型数字的常用进制:
  • 二进制 以前缀为0b开头的数字,数字只能有0或1组成,如 0b10;
  • 八进制 以前缀 0 开头数字,数字只能以0~7组成, 如070;
  • 十进制 最常用的进制,目前不指定进制时,默认都为10进制,如 10;
  • 十六进制 以前缀0x开头,数字只能由0~9和A~F的字母混合组成,字母不区分大小写,如 0xaf15;
进制之间的转换

整数之间的进制转换可以使用parseInt() 或者 toString(), 只需知道进制即可转换为相应的数字;

注意点

千万不能将两个浮点数运算之后与另一个浮点数比较,这会给你带来意想不到的错误。由于浮点数存在精度问题,此问题在大多数语言中均存在,如0.1 + 0.2 是不会乖乖的等于0.3的。

Null

Null 也是只有一个唯一值的类型,其值为null。Null实际上是一个空对象指针,故,我们在声明一个空对象时,可以将其初值设为null。

var myObject = null;
typeof null;  // Object
Boolean

Boolean 类型有两个值,true 和 false。在JS中,控制流语句中,会存在自动执行Boolean类型的转换,我们需要注意其转换规则。唯一能转换为false的值有以下几类:

  • 空字符串 “”;
  • 数字0 与 NaN;
  • null
  • undefined
  • false (Boolean)
    除这几种数据之外,其余均会被转化为true;
String

JS中的String类型数据用”” 或 ”,二者的使用在JS中没有区别,只需保证其开闭统一即可。需注意,String类型的值虽是基本类型数据,但其值实际上属于引用类型,这是由于String类型的值没有固定的大小,只能使用引用类型进行储存。String对象具有很多强大的内置方法,在此就不一一介绍。

Symbol

Symbol类型是ES6中新引入的基本类型数据,其作用是生成一个独一无二的数据值。

var onlyOne = Symbol("it's me"); 
var onlyOne_ = Symbol("it's me");

此处,onlyOne的值与onlyOne_的值虽然相同,但他们是不相等的,因为他们是独一无二的数据。

复杂数据类型

Object

Object 类型的数据是有一系列属性与方法组成,它实质上一个键值对的组合体。在JS中,不存在自定义对象类型,他们实际上都属于Object类型数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值