一.数据类型简介
1.为什么需要数据类型?
- 在计算机中,不同的数据类型所占用的储存空间是不同的,为了便于把数据分成所需内存的大小不同的数据,充分利用存储空间,于是就定义了不同的数据类型
- 简单来说,数据类型就是数据的类别型号。例如姓名’ xx’ ,年龄20 ,这些数据类型就是不一样的。
2.变量的数据类型
- 变量是用来存储值得所在处,它们有名字和数据类型,变量得数据类型就决定了如何将代表这些值得位存储到计算机得内存中,Javascript是一种弱类型或者是动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确认。
- JavaScript拥有动态类型,同时也意味着相同的变量可用作不同的数据类型。
代码演示如下
<script>
// 1.var num; 这里的num变量我们不确定属于什么数据类型
var num = 10; //num属于数字型
// js的变量数据类型是只有在程序在运行过程中,根据=右边的值来确定的
// 2.js是动态语言 变量类型是可以变化
var time = '浩哥'; //字符串型
var age = 20; //数字型
</script>
3.数据类型的分类
JS把数据类型分为两类:
- 简单数据类型(Number,String,Boolean,Undefined,Null)
- 复杂数据类型(Object)
二.简单数据类型(基本数据类型)
数字型Number
1.数字型进制(了解就行)
- 在JS中使用八进制前面加0 ,十六进制加0x
<script>
var num = 20; // 数字型
var PI = 3.11; //数字型
//1.八进制 0~7 前面加0表示八进制
var num1 = 010;
console.log(num1); //010 八进制 转换为 10进制就是 8
// 2.十六进制 0~9 a~f 数字前面加0x表示十六进制
var num2 = 0x9;
console.log(num2);
</script>
2.数字型最大最小值(了解就行)
- Number.MAX_VALUE(最大值)
- Number.MIN_VALUE(最小值)
// 3.数字型最大最小值
console.log(Number.MAX_VALUE); //1.7976931348623157e+308
console.log(Number.MIN_VALUE); //5e-324
3.数字型三个特殊值
- Infinity,代表无穷大,大于任何数字
- -Infinity,代表无穷小,小于任何数字
- NaN,Not a number,代表一个非数值
// 4.无穷大
console.log(Number.MAX_VALUE * 2); //Infinity
// 5.无穷小
console.log(-Number.MIN_VALUE * 2); //-Infinity
// 6.非数字
// 字符串不能和数字相减 返回的结果是NAN
console.log('浩哥' - 100);//NAN(非数字的意思)
4.isNaN()
- isNaN()这个方法用来判断非数字 并且返回一个值 如果是数字放回的是false 不是返回true
<script>
console.log(isNaN(11)); // fasle
console.log(isNaN('浩哥')); // ture
</script>
字符串型String
1.字符串引号嵌套
- JS可以用单引号嵌套双引号,或者单引号嵌套双引号(外双内单,外单内双)
<script>
// 外双内单
var str = "努力学习'编程'加油"
console.log(str);
// 外单内双
var str1 = '努力学习"编程"加油'
console.log(str1);
</script>
2.字符串转义符,转义符都是\开头的
3.字符串长度
- 检测获取字符串的长度length
// 1.检测字符串获取的长度 length
var str = 'Hello there Javascript';
console.log(str.length); //22
4.字符串拼接
- 多个字符串之间可以使用+进行拼接 ,其拼接方式为字符串+任何类型=拼接之后的新字符串
- 拼接前会把字符串相加的任何类型转成字符串,在拼接成一个新的字符串
- 口诀:数字相加,字符相连
// 2.字符串的拼接 + 只要有字符串和其他类型相拼接最后都是字符串类型
console.log('浩' + '哥'); //浩哥
console.log('12' + '12'); //1212
console.log('12' + 12); //1212
console.log(12 + 12); //24
5.字符串拼接加强
var age = 20;
// 变量不加引号的哟!!!
// 变量和字符串相连的口诀:引引加加
console.log('浩哥今年' + age + '岁');
布尔型Boolean
- 布尔类型有俩个值:ture和false,其中ture表示真(对),false表示假(错)。
<script>
var fase = true; // 布尔型
var fase1 = false; // 布尔型
// 布尔型与数字相加
console.log(fase+1); // true 参与加法运算当1看待
console.log(fase1+1); // false 参与加法运算当0看待
</script>
undefined
- 一个声明后没有被赋值的变量会有一个默认值undefined(未定义的数据类型)(如果进行相加,相连时注意结果)
// 一个声明变量没有赋值的 就是undefined未定义的数据类型
var str;
console.log(str); //undefined
// 如果相加勒?
var str1 = undefined;
console.log(str1 + 'hh'); // undefinedhh 会成为一个新的字符串
// 如果与数字相加勒?
console.log(str1 + 1);//NaN undefined 与数字相加会是NaN 因为他也不确定这是什么数据类型
Null(空值) 表示空值,即此处的值为空
如果定义得变量赋值为nall(一般是对象进行初始化使用或者是删除一个对象的时候用到的)
var str2 = null
// 与字符串相连
console.log(str2 + 'hh'); //nullhh
// 与数字相加
console.log(str2 + 1); //1 null里面是空值 所以相加为1
三.获取变量数据类型
- typeof 可用来检测变量的数据类型
<script>
var str = true
console.log(typeof str); // 布尔型的Boolean
var str1 = 'hh'
console.log(typeof str1); //字符串型的String
// 例子 age是什么数据类型?字符串型的string
var age = prompt('请输入你的年龄')
console.log(typeof age);
</script>
四.数据类型转换
1.有时候我们获取的数据类型不一样比如字符串,数字型这些不能直接进行加减算法,而需要转换变量的数据类型。简单来说就是把一种数据类型的变量转换成另外一种数据类型。
- 转换为字符串类型
- 转换为数字型
- 转换为布尔型
转换为字符串类型
代码演示
<script>
//1. 变量.(toString) 别忘记加括号哟!!!
var num = 10;
var str = num.toString();
console.log(str);
// 2.利用String(变量)
console.log(String(num));
// 3.利用+号拼接字符串进行转换 有隐式转换
console.log(num + '');
</script>
转换为数字型(重点)
代码演示
<script>
// 1.parseInt(变量) 可以把字符串转换为数字型 得到的是整数 注意I大写
console.log(parseInt('3')); //3
console.log(parseInt('pink')); // NaN 因为他只认识数字的
console.log(parseInt('3.12')); //3 他只取整数
console.log(parseInt('120px')); //120 他会去掉这个单位
var h = '12123123aaa'
var b = 'aaa12123123'
// 强制转换
console.log(parseInt(h)); //12123123 如果数字再前面它只会强制转换数字
console.log(parseInt(b)); //NaN 如果字母在前数字再后面就会NaN
// 2.parseFloat(变量) 可以把字符串转换为数字型 得到的是小数 注意F大写
console.log(parseFloat('3.12')); //3.12
console.log(parseFloat('120px')); //120 他会去掉这个单位
// 3.利用Number(变量)
console.log(Number('123')); //123
console.log(Number('undefined')); //NaN
console.log(Number('false')); //123
console.log(Number(false)); //0
console.log(Number(true)); //1
// 4.里面隐式转换(- * /)
console.log('123' - '120'); //3
console.log('123' + '120'); //123120不能用加号 加号是拼接了!!!
console.log('123' * '1'); //123
console.log(1 + true); //2
总结:通常情况下是用来转字符串得
如果字符串整体来看是一个数字,那么就转化为这个数字
如果字符串整体来看不是一个数字,那么就转化为NaN
如果字符串是一个特殊的空字符串或者空白字符串,那么就转化为0
</script>
转换为布尔型
- 代表空、否定的值会被转换为false,如’ 、NaN、null、undefined 、空白字符串
- 其余值都会被转为true
<script>
console.log(Boolean('')); // false
console.log(Boolean(NaN)); // false
console.log(Boolean('123')); // true
console.log(Boolean(' '));true
console.log(Boolean(''));false
五.扩展:解释型语言和编译型语言
1.计算机不能直接理解任何除机器语言以外的语言,所以我们写的程序要把他翻译为机器语言。翻译成机器语言的工具,被称为翻译器。
- 翻译器翻译的方式有俩种,一个是编译,另一个是解释。两者的区别在于翻译的时间点不同
- 编译器是在代码执行之前进行编译,生成中间代码 比如JAVA他有一百行代码它是先把全部代码进行编译完中间生成一个文件夹 在翻译为机器语言。
- 解释器是在运行时进行及时解释,并立即执行的 比如Javascript它是有一百行代码它是翻译一句执行一句的 在翻译为机器语言。
2.标识符、关键字、保留字
- 标识符:是值开发人员为变量 函数 属性 参数取得名字 标识符不能是关键字或者保留字
- 关键字:是值JS本身已经使用了的字,不能在用它当变量名、方法名。
- 保留字:实际上就是预留的关键字,意思是虽然现在本身关键字 但是未来可能是关键字 也不能使用。