■ 关于数据类型
简单来说,数据类型就是数据的类别型号
在计算机中,不同类型的数据所需占用的存储空间是不同的
为充分利用存储空间,根据不同数据所需内存大小的不同,定义了不同的数据类型
■ 变量的数据类型
变量是存储数据的所在处,它有自己的名字及所存储数据的数据类型
变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中
javascript是一种弱类型或者动态语言
这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定
即变量的数据类型是在程序运行过程中,根据等号右边的值来确定的,运行完毕之后,变量就确定了数据类型
var age = 16; //该语句运行之后,通过16确定age为数字类型
var name = 'Tom'; //该语句运行之后,通过'Tom'确定name为字符串类型
javascript具有动态类型,同时也意味着相同变量可用作不同的类型
var x = 6; //x为数字
x = 'Tom'; //此时x为字符串
■ 数据类型的分类
数据类型分为以下两类:
- 简单数据类型
Number, String, Boolean, Undefined, Null - 复杂数据类型
object
□ 简单数据类型
- Number
说明: 数字类型,包含了整型值和浮点型值,如21,0.21
默认值: 0 - Boolean
说明: 布尔值类型,如true,false,等价于1和0
默认值: false - String
说明: 字符串类型,如’Tom’,‘张三’,js里字符串都带引号
默认值: ‘’ - Undefined
说明: var a; 声明了变量a但是没有给值,此时a=undefined
默认值: undefined - Null
说明: var=null; 声明了变量a为空值
默认值: null
◆ 数字型Number
数字类型既可以用来保存整数值,也可以保存小数(浮点)
var num = 2000; //整数
var PI = 3.14; //小数
◇ 数字型进制
最常见的进制有二进制,八进制,十进制,十六进制
- 八进制
八进制数字序列范围:0~7
程序里数字前面加0,代表八进制
var num = 010;
console.log(num); //输出:8
var num = 012;
console.log(num); //输出:10
- 十六进制
十六进制数字范围:09和af
程序里数字前面加0x,代表十六进制
var num = 0x9;
console.log(num); //输出:9
var num = 0xa;
console.log(num); //输出:10
◇ 数字型范围
Number.MAX_VALUE //数值中最大的值
Number.MIN_VALUE //数值中最小的值
◇ 数字型三个特殊值
- Infinity
无穷大,大于任何数值 - -Infinity
代表无穷小,小于任何数值 - NaN
not a number, 代表一个非数值
console.log(Number.MAX_VALUE * 2); //输出:Infinity
console.log(Number.MIN_VALUE * 2); //输出:-Infinity
console.log('Tom' * 2); //输出:NaN
isNaN() 用于判断非数字
console.log(isNaN(12)); //输出:false
console.log(isNaN('Tom')); //输出:true
◆ 字符型String
字符串型可以是引号中的任意文本,引号可以是单引号,也可以是双引号,推荐使用单引号
var str = '我是一个"天才"程序员'; //输出:我是一个"天才"程序员
注:
如果字符串内部有引号部分,可以通过以下方式:
外双内单,或者外单内双,或者使用转义字符
◇ 字符串转义符
类似HTML里面的特殊字符,字符串中也有特殊字符,称之为转义符
转义字符要写在引号里
转义符都是\开头的,以下为常用的转义符:
- \n: 换行符,n代表newline
- \ : 斜杠\
- \’: '单引号
- \": "双引号
- \t: tab缩进
- \b: 空格,b代表blank
◇ 字符串长度
var str = 'my name is tom';
console.log(str.length); //输出:14
◇ 字符串拼接
多个字符串可以通过 + 进行拼接,拼接后的字符串是一个新的字符串
字符串和其他类型数值通过+拼接,最终输出结果也是一个字符串
console.log('我的年龄是' + 18); //我的年龄是18
字符串里连接变量
var age=18;
console.log('我的年龄是' + age + '岁'); //我的年龄是18岁
◆ 布尔型
两个值:true和false
布尔值在数值运算中,true表示1,false表示0
console.log(true + 1); //输出:2
◆ undefined
var str1;
var str2 = undefined;
console.log(str1); //输出:Undefined
console.log(str2); //输出:Undefined
console.log(str2 + 'Tom'); //输出:字符串"UndefinedTom"
console.log(str2 + 1); //输出:NaN
console.log(str2 + true); //输出:NaN
◆ null
var space = null;
console.log(space + 'Tom'); //输出:字符串"nullTom"
console.log(space + 1); //输出:1
■ 获取变量数据类型
通过typeof可用来获取检测变量的数据类型
var num = 10;
var str = 'Tom';
var flg = true;
var vari = undefined;
var obj = null;
console.log(typeof num); //输出: number
console.log(typeof str); //输出: string
console.log(typeof flg); //输出: boolean
console.log(typeof vari); //输出: undefined
console.log(typeof obj); //输出: object
■ 数据类型转换
通常有以下几种类型转换
- 转换为字符串类型
- 转换为数字类型
- 转换为布尔类型
□ 转换为字符串类型
- toString()
var num=10;
console.log(num.toString()); //输出:10
- String()
var num=10;
console.log(String(num)); //输出:10
- 加号拼接字符串
和字符串拼接的结果都是字符串,称为隐式转换,推荐该种方式
var num=10;
console.log(num + ''); //输出:10
□ 转换为数字类型
- parseInt(string)
parseInt('78') //78
parseInt('3.94') //3,取整,截取整数,不四舍五入
parseInt('120px') //120,直接去掉px
parseInt('rem120px') //NaN,数字前面不能有字符
- parseFloat(string)
parseFloat('12.78') //12.78
parseFloat('120px') //120,直接去掉px
parseFloat('rem120px') //NaN,数字前面不能有字符
- Number(string)
Number('12') //12
- js隐式转换(- * /)
通过js隐式转换(- * /),利用算术运算隐式转换为数值型
'12' - 0 //12
'120' - '115' //5
'120' + '115' //120115, 加号起拼接作用
'120' * 1 // 120
□ 转换为布尔型
Boolean()
通过Boolean() 方法,其他类型转换为布尔值,如Boolean(‘true’)
注:
代表空,否定的值会被转换为false,如’’,0,NaN,null,undefined
其余的值都会被转换为true
console.log(Boolean('')); //输出:false
console.log(Boolean(0)); //输出:false
console.log(Boolean(null)); //输出:false
console.log(Boolean(NaN)); //输出:false
console.log(Boolean(undefined)); //输出:false
console.log(Boolean('你好')); //输出:true
console.log(Boolean('12')); //输出:true