数据类型以及转换

73 阅读5分钟

数据类型

为什么需要数据类型?

在计算机中,不同的数据所占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用储存空间,于是定义看不同 的数据类型

数据类型的分类

1.简单数据类型

2.复杂数据类型

简单数据类型

1.Number:数字型,包含整型值和浮点型值

2.Boolean:布尔值如true/false,等价于1和0

3.String:字符串类型 '张三'

4.Undefined

5.Null:空值

数字型进制

最常见的进制有二进制/八进制/十进制/十六进制

1.八进制:0~7我们程序里面数字前面加0表示八进制

var num1=010

console.log(num1)//010八进制转换为10进制就是8

2.16进制数字序列范围:0-9以及A-F

var num=0xA

在JS中八进制前面加0,十六进制前面加0x

数字型范围

最大值:Number.MAX_VALUE,这个值为1.7976931348623157e+308

最小值:Number.MAX_VALUE,这个值为5e-32

数字型三个特殊值

infinity,代表无穷大,大于任何数值

-infinity,代表无穷小,小于任何数值

NaN,Not a number,代表一个非数值

isNaN用来判断非数字并且返回一个值

如果是数字返回的是false,如果不是数字返回的是true

console.log(isNaN(12))-->结果是false

字符串类型

字符串可以是引导中的任意文本,其语法为""双引号或者''单引号

JS可以用单引号嵌套双引号,或者用双引号嵌套单引号(外双内单,外单内双)

var name='我是"高富帅"一个'
var name="我是'高富帅'一个"

字符串转义符 (都是用\开头写在引号内的)

\n--->代表换行符,n是newline的意思

\\--->代表斜杠\

\'--->代表'单引号

\"-->代表"双引号

\t-->代表tab缩进

\b-->代表空格,b是blank的意思

字符串长度

通过字符串length的属性获取字符串长度

var name='我是第一个 去干活的人'
console.log(name.length)//结果显示的是11

字符串拼接

多个字符串之间可以使用+进行拼接,其拼接方式为字符串+任何类型=拼接之后的新字符串

console.log('沙漠'+'骆驼')//'沙漠骆驼'
console.log('pink老师'+18)//'pink老师18'
console.log(12+12)//24
console.log('12'+12)//'1212'

+口诀:数值相加,字符相连 变量和字符串相连的口诀:引引加加

var age=18
console.log('pink老师'+age+'岁')

布尔类型

布尔类型有两个值:true(1)/false(0)

Undefined(未定义数据类型)和Null(空值类型)

一个声明后没有被赋值的变量会有一个默认值undefined(如果进行相连或者相加时间,注意结果)

var str;
console.log(str)//显示undefined
var de=null
console.log(de+1)//1

检测变量的数据类型

检测方式:在 typeof 后面加小括号执行,将要检测的数据放在小括号内部

var num=10
console.log(typeof(10))//number
console.log(typeof num)//number
var num1=null
console.log(typeof num1)//object

字面量

字面量是在源代码中一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值\

数字字面量:8 9 10

字符串字面量:'pink老师'

布尔值字面量:true false

数据类型转换

转换为数字类型

规律

1.字符串转数字

如果转换的字符串是纯数字组成的,那么直接转换为数字

如果转换的字符串是空字符串或者空白字符串,那么直接转换为数字0

其他类型的字符串(不是空/空白/纯数字字符串)会转换为NoN:表示的是一个number的数字,但是没有办法通过常规的数字表明它,所以只能使NaN表示

2.布尔值转数字

false转换为0

true转换为1

3.undefined转数字

undefined转换为NaN(非数值)

4.Null转数字

d.null转为0

方法一: Number(数据)(可以用于任何数据类型,将其转换为数字类型)

console.log(typeof (Number('102.5')), Number(102.5))//number 102.5

方法二:parseInt数据

会将Number类型,并且值是整数(直接忽略小数点以后的值,并不会四舍五入)

在转换的时候,如果是纯数字字符串或者是数字开口的字符串,那么会转换为数字,否则就是NaN

方法三:parseFloat数据

转换结果与parseInt一样,但是在转换小鼠的时候会保留小数点后的数字

方法四:拓展知识:在实际开发中数据类型 - 0

转换为字符串类型

方法一: 变量.toString(),注意undefined和null不能用这个方法

var str1 = 100
console.log(typeof (str1.toString()), str1.toString());/* string 100 */

方法二:String(变量)

console.log(typeof (String(str1)), String(str1));/* String 100 */

方法三: 变量+''

console.log(typeof (str1 + ''), str1 + '');/* String 100 */

转换为布尔值 Boolean(变量)

1.数字转换为布尔值,只有0是转换为false,其他都为true

2.字符串转换为布尔值,只有空字符串会转换为false,其他都是true

3.NaN.undefined和null转换为布尔值就是false

 /*1.数字转换为布尔值,只有0是转换为false,其他都为tru*/
 var num1 = 100
 var num2 = 0
 var num3 = -1
 console.log(num1, '-->', Boolean(num1));/100-->true */
 console.log(num2, '-->', Boolean(num2));/0-->false */
 console.log(num3, '-->', Boolean(num3));/*
 /* 2字符串转换为布尔值,只有空字符串会转换为false,都是true */
 var str1 = 'abc100'
 var str2 = '100'
 var str3 = '我是猪'
 var str4 = '100abc'
 var str5 = ''
 var str6 = ' '
 var str7 = '0'

console.log(str1, '-->', Boolean(str1));'abc100'-->true */
console.log(str2, '-->', Boolean(str2));'100'-->true */
console.log(str3, '-->', Boolean(str3));/* ''-->true */
console.log(str4, '-->', Boolean(str4));'100abc'-->true */  
console.log(str5, '-->', Boolean(str5));''-->false */
console.log(str6, '-->', Boolean(str6));/* '-->true */
console.log(str7, '-->', Boolean(str7));'0'-->true */

/* 3.undefined和null转换为布尔值就是false */
var nul1 = null
var und1 = undefined
console.log(nul1, '-->', Boolean(nul1));/* null-->false */
console.log(und1, '-->', Boolean(und1));/* undefined-->false */