1.数据类型简介
1.为什么需要数据类型
在计算机中,不同数据类型的数据所占内存空间是不同的,为了把数据分成内存大小不同的数据,更好的利用内存空间,因此给数据划分不同的数据类型
例如姓名“张三”,年龄18。
2.变量的数据类型
内存中,JavaScript是一种弱类型或者说动态语言。这意味着不提前声明变量的类型,在程序运行过程中,类型会被自动确认。
var age=10;//这是一个数字型
var name='dly'//这是一个字符串
在代码运行过程中,变量的数据类型是由=右边变量值的数据类型来判断的,运行完毕后,变量就确定了数据类型。
JavaScript拥有动态数据类型,这意味着相同的变量可以用作不同的类型。
var num=123;//num为数字
var num='123'//num为字符串
3.数据类型的分类
JS把数据类型分为两类
- 简单数据类型(Number,String,Boolean,Undefined,Null)
- 复杂数据类型(Object)
2.简单数据类型
1.简单数据类型(基本数据类型)
简单数据类型 | 说明 | 默认值 |
Number | 数字型,包含整形和浮点型,例21,0.21 | 0 |
Boolean | 布尔值类型,如true,false 等价于1和0 | falae |
String | 字符串类型,如''李四'',"dly" | '' '' |
Undefined | var a;声明了变量,但是没有赋值a=undefined | undefined |
Null | var a=null;声明了变量a 为空值 | null |
1.Number(数字型)
JS数字型既可以存整数,也可以存小数
var num=123;//整数
var num=12.3;//小数
数字型进制:二进制 八进制 十进制 十六进制
//数字型进制
/* 八进制 0~7 数字前面加一个0就表示八进制 */
var ba=012;//8进制转换成10进制10
var num1=010;//8进制转换成10进制8
console.log(ba);
console.log(num1);
/* 十六进制 数字前面加上0x就表示十六进制0~9 a~f */
var num2=0xa;//16进制转换成10进制10
var num3=0xf;//16进制转换成10进制15
console.log(num2);
console.log(num3);
数字型最大值(最小值):
/* 数字型最大值 */
console.log(Number.MAX_VALUE);
/* 数字型最小值 */
console.log(Number.MIN_VALUE);
无穷大,无穷小,非数字:
/* 无穷大 */
console.log(Number.MAX_VALUE*2);//Infinity
/* 无穷小 */
console.log(-Number.MAX_VALUE*2);//-Infinity
/* 非数字 */
console.log('dly'-100);//NaN
isNan()方法判断变量是不是非数字,如果是数字,返回一个布尔值false,如果不是数字,返回一个布尔值true。
console.log(isNaN(123));//false
console.log(isNaN('dly'));//true
2.String (字符串类型)
JS可以用单引号嵌套双引号,或者用双引号嵌套单引号(外单内双,外双内单)
var str1='我是一个"高富帅"'
var str2="我是一个'高富帅'"
字符串转义符:
转义符 | 解释说明 |
\n | 换行符,n是newline的意思 |
\\ | 斜杠\ |
\' | ' 单引号 |
\" | " 双引号 |
\t | tab 缩进 |
\b | 空格,b是blank的意思 |
console.log('我是一个\n"高富帅"');//换行
console.log('我是一个\b"高富帅"');//空格
console.log('我是一个\t"高富帅"');//缩进
案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
alert('梦想洋溢着快乐,青春包裹着梦想。\n我的青春,我的花季雨季,都是属于我自己的,只有我才可以去操控它。\n我的青春只有我才可以做主!')
</script>
</head>
<body>
</body>
</html>
运行结果:
字符串长度(length属性):
/* 检测字符串的长度 */
var str="my name is dly"//算上空格一共长度是14
console.log(str.length);
拼接字符串:
字符串+任何类型=新的字符串
/* 字符串拼接 */
console.log('dly'+'真帅');//dly真帅
console.log('dly'+'12');//dly12
console.log('dly'+12);//dly12
console.log(12+12);//24
console.log('12'+12);//1212
字符串拼接加强:
/* 字符串拼接加强 */
console.log('dly'+18+'岁')//dly18岁
var age =18;
console.log('dly'+age+'岁');//dly18岁
经常会将字符串和变量来拼接,因为变量可以很方便的修改里面的值
变量是不能添加引号的,因为引号的变量会变成字符串
如果变量两侧都有字符串进行拼接,口诀“引引加加”,删掉数字,变量写加号中间
3.Boolean(布尔值类型)
var flag1=false;//布尔值false 相当于0
var flag2=true;//布尔值true 相当于1
/* 布尔值类型参与数字运算 */
console.log(flag1+1);//1
console.log(flag2+1);//2
4.Undefined和Null
// 如果一个变量声明未赋值 就是 undefined 未定义数据类型
var str;
console.log(str);
var variable = undefined;
console.log(variable + 'dly'); // undefineddly undefined 和数字相加 最后的结果是新字符串
NaNconsole.log(variable + 1); // NaN// null 空值
var space = null;
console.log(space + 'dly'); // nulldly
console.log(space + 1); // 1
3.获取变量数据类型
typeof方法
var num=10;
var t= typeof num;//number
console.log(t);
var str='dly'
console.log(typeof str);//string
var bl=true;
console.log(typeof bl)//boolean
注意(prompt键盘输入的是字符串类型):
var age=prompt('请输入您的年龄')
console.log(age);//18
console.log(typeof age)//string
4.数据类型转换
1.什么是数据类型转换
使用表单、promapt获取过来的数据默认是字符串类型的,此时不能能进行简单的加法运算而需要转换变量的数据类型,通俗来说就是把一种数据类型的变量转换成另外一种数据类型。
通常会实现三种方式的转换
- 转换成字符串类型
- 转换成数字类型
- 转换成布尔型
1.转换成字符串
方式 | 说明 | 案例 |
toString() | 转换成字符串 | var num=1;alert(num.toString()); |
String()强制转换 | 转换成字符串 | var num=1;alert(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num=1;alert(num1+"dly") |
/* 转换成字符串 */
//1.toString()方法
var num=1;
console.log(typeof num.toString())
//2.强制类型转换
console.log(typeof String(num));
//3.通过字符串拼接
console.log(typeof (num+"1"));
2.转换成数字类型(重点)
方式 | 说明 | 案例 |
parselnt(string)函数 | 将string类型转换成整数数值型 | parselnt('50'); |
parseFloat(string) | 将string类型转换成浮点数数值型 | parseFolat('50.21'); |
Number()强制转换 | 将string类型转换成数值型 | Number('50'); |
js隐式转换(- * /) | 利用算数运算隐式转换成数值型 | '50'-0; |
/* 转换成数值型 */
var num1='50'
//1.parseInt()
console.log(typeof parseInt(num1));
//2.parseFolat()
var num2='50.21'
console.log(typeof parseFloat(num2));
//3.Number()强制类型转换
console.log(Number(num1));
//4.(- * /)隐式转换
console.log( typeof (num1/2));
console.log( typeof (num1*2));
console.log( typeof (num1-2));
注意parseInt和parseFolat单词的大小写
3.转换成布尔型
方式 | 说明 | 案例 |
Boolean()函数 | 其他类型转换成布尔值 | Boolean('true'); |
- 代表空、否定值会被转换成 false,如' ',0,NaN,null,undefined
- 其余的值都会被转换成true
/* 转换成布尔型 */
console.log(Boolean(''));//false
console.log(Boolean(0));//false
console.log(Boolean(NaN));//false
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
console.log(Boolean('dly'));//true
console.log(Boolean(12));//true