JavaScript 的数据类型

JavaScript 的数据类型

说明:虽然学习 JavaScript 已经好久了,但是都是一边学一边用的,从来都没有整理过学习笔记,导致了没有一个完整的知识体系。接下来就要找工作了,借这段时间好好复习一遍 JavaScript 的基础知识,温故而知新。以下的笔记从《 JavaScript 权威指南》中总结。

JavaScript的6大数据类型

  1. Number 类型–数字类型:包括整数和浮点数
  2. String 类型–字符串类型
  3. Boolean 类型–布尔类型
  4. null --空值
  5. undefined --未定义
  6. Object 类型–对象类型:是一些属性的集合
    其中,6个数据类型分成两类:
  • 一类是基本数据类型,包括Number、String、Boolean、null、undefined。
  • 一类是引用数据类型,只包括Object。

基本数据类型与引用数据类型的区别

JavaScript 的内存分成两类,一类叫做栈内存,一类叫做堆内存。

  1. 栈内存是保存的是一对对键值对。键是变量命,值是变量的属性值。
  2. 堆内存是一块内存空间,在该空间中存储数据。该空间有一个起始的内存空间地址。
  • 当创建一个基本的数据类型变量时,直接在栈内存中写入键(变量名)与值(属性值)。当把这个变量赋值给另一个变量时,是再写入一个键值对,只是两个变量的值是一样的,除此之外,没有其他的联系了。两者是独立的个体。
var a = 123;
var b = a;
b = 456;
console.log(a);		//输出 “123”,b的改变不会影响a的值
  • 当创建一个引用数据类型变量时(即对象),首先在堆内存中划分出一块内存空间,用来储蓄这个对象的全部属性。然后在栈内存中写入一个键值对,键是对象名,值是堆内存空间的内存地址,这个对象指向这块内存空间。当使用到这个对象时,到这块内存空间中寻找属性。当把这个对象赋值给另一个对象时,不再在堆内存中划分空间了,只是在栈内存中,写入一个键值对,键是另一个对象名,值仍是这块堆内存空间的内存地址。两个对象指向了同一块内存空间。
var obj1 = new Object();
var obj2 = obj1;
obj1.name = "lin";
obj2.name = "linhong"
console.log(obj1.name);		//输出 “linhong”,obj1 和 obj2 指向同一块内存

Number 类型

四个特殊值

Infinity:正无穷大,超过了最大的正数所能表示范围的正数,上溢
-Infinity:负无穷大,超过了最小的负数所能表示范围的负数
NaN:not-a-number,不是一个数字,它和任何值都不相等,包括本身也不相等。假设 x 是否等于 NaN ,只能使用:x!=x,来判断 x 是否等于 NaN。
-0:负零,下溢超出了最小的正数所能表示的范围的数

注意

由于 JavaScript 采用了 IEEE-754 浮点数表示法来表示浮点数的,当涉及到比较精确的浮点数计算时,最好将数据发送到后端再进行计算,或者将浮点数扩大一定的倍数,变成整数,再进行计算,这样可以得到比较精确的计算值。

Boolean 类型

要么为真,要么为假的变量。
JavaScript 中,只有以下6个值为假值,其它的值都是真值。

  • undefined
  • null
  • 0
  • -0
  • NaN
  • “” //空字符串

null 和 undefined 类型

null 和 undefined 都是 JavaScript 的两个特殊值,两者有相同之处,也用不同的地方。
null : 表示空的对象值,它的数据类型是 Object
undefined :表示属性或元素不存在,它的数据类型是 undefined,是 undefined 类型唯一的一个值

强制类型转换

其他类型转换为 Number 类型

转换方法一:使用Number()构造函数
  1. 字符串 转换为 数字
  • 如果字符串为纯数字字符,直接转换为数字
  • 如果字符串含有非数字字符,转换为NaN
  • 如果字符串是一个空串,或全是空格的字符串,转换为NaN
  1. 布尔 转换为 数字
  • true 转换为 1
  • false 转换为 0
  1. null 转换为 0
  2. undefined 转换为 NaN
转换方式二:使用parseInt()函数和parseFloat()函数

这种方式主要用于将字符串转换为数字。其他类型使用这种方式,则先转换成字符串,再转换成数字。parseInt() 将字符串转换成整数,parseFloat() 将字符串转换成浮点数。
转换过程:将一串字符串从左到右转换,遇到可以转换的字符,先将其转换成数字,遇到不可转换的字符,则剩下的字符均忽略了。

转换数字类型的进制
进制的表示方法

十六进制:0x,如:10表示为0xa;
八进制:0,如:10表示为012;
二进制:0b,不是所有的浏览器都支持,如:2表示为0b10

转换函数 parseInt(a,10)

a表示要转换的字符串,10表示进制数

其他类型转换为 String 类型

转换方法一:使用被转换类型的 toString() 方法,将转换结果返回。

null 和 undefined 没有该类型的 toString() 方法。

转换方法二:调用 String() 构造函数

其他类型转换为 Boolean 类型

转换方法:使用 Boolean() 构造函数

除了以下6种方式,将转换为 false ,其它的将转换为 true.

  • undefined
  • null
  • 0
  • -0
  • NaN
  • “” //空字符串
以上是强制类型转换(也叫显性类型转换)的方式,其实在 JavaScript 中,更常见的是隐性类型转换,可以利用各种运算符进行隐性类型转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值