一.概述
JS是一门弱类型语言,这意味着不用提前声明变量的类型,在程序运行过程中,只要该变量被赋值,则类型会被自动确定。也意味着相同的变量可用作不同的数据类型。
var age = '12' //此时age是字符串型
age = 12 //此时age是数值型
JS中数据类型分为:
(1)简单数据类型
(2)复杂数据类型
简单数据类型:数值型,字符串型,布尔型,未定义,空(Number,String,Boolean,Undefined,Null)
复杂数据类型:对象(object)
二.简单数据类型
number | 数值型,包括小数 |
string | 字符串型 |
boolean | 布尔型 |
undefined | 未定义,声明了变量但没有赋值,此时该变量未定义 |
null | 初始化变量为null |
1.数值型
(1)包括整数和浮点数
<!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>
var n1 = 12;
var n2 = 12.12;
console.log(typeof n1,typeof n2); //typeof是单目操作符,返回的是右侧数据的类型
</script>
</head>
<body>
</body>
</html>
(2)数值的进制表示
JS中八进制前面加0,十六进制前面加 0x,默认显示的是十进制。
<!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>
var n1 = 010;
var n2 = 0xa;
console.log(n1,n2);
</script>
</head>
<body>
</body>
</html>
(3)数值型范围
Number.MAX_VALUE取最大值,Number.MIN_VALUE取最小值
<!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>
console.log(Number.MAX_VALUE,Number.MIN_VALUE);
</script>
</head>
<body>
</body>
</html>
(4)数值型的三个特殊值
Infinity ,代表无穷大,大于任何数值
-Infinity ,代表无穷小,小于任何数值
NaN ,Not a number,代表一个非数值,例如:字符串-10得到的是NaN
isNaN():来判断一个变量是否为非数字的类型,返回 true 或者 false
<!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>
var n1 = Number.MAX_VALUE * 2;
var n2 = Number.MIN_VALUE * 2;
var n3 = 'str'
console.log(n1,n2,isNaN(n3));
</script>
</head>
<body>
</body>
</html>
2.字符串型
(1)可以由单引号或双引号包括,但是推荐使用单引号,引号嵌套遵循就近原则
<!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>
var n1 = 'str1'
var n2 = "str2"
var n3 = 'str"str"str'
console.log(typeof n1,typeof n2);
</script>
</head>
<body>
</body>
</html>
(2)转义字符
(3)字符串长度
字符串是由字符组成,length属性统计的是字符的个数。
<!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>
var n1 = 'str1我的';
console.log(n1.length); //结果是6
</script>
</head>
<body>
</body>
</html>
(4)字符串拼接
多个字符串之间可以使用 + 进行拼接,其拼接方式为 字符串 + 任何类型 = 拼接之后的新字符串
<!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>
var n1 = 12 +'str1我的'+ 12
console.log(n1); //12str1我的12
</script>
</head>
<body>
</body>
</html>
3.布尔型
(1)布尔型和数字型相加的时候, true 的值为 1 ,false 的值为 0。
4.undefined
(1)一个声明后没有被赋值的变量会有一个默认值 undefined ( 如果进行相连或者相加时,注意结果)
<!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>
var variable;
console.log(variable); // undefined
console.log('你好' + variable); // 你好undefined
console.log(11 + variable); // NaN
console.log(true + variable); // NaN
</script>
</head>
<body>
</body>
</html>
5.null
(1)一个声明变量给 null 值,里面存的值为空
<!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>
var vari = null;
console.log('你好' + vari); // 你好null
console.log(11 + vari); // 11
console.log(true + vari); // 1
</script>
</head>
<body>
</body>
</html>
三.简单数据类型转换
使用表单、prompt 获取过来的数据默认是字符串类型的
1.转化为字符串类型
toString() |
String() |
+拼接 隐式转换 |
(1)toString()
<!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>
var n1 = 12;
console.log(typeof n1.toString()); //string
</script>
</head>
<body>
</body>
</html>
(2)String()
<!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>
var n1 = 12;
console.log(typeof String(n1)); //string
</script>
</head>
<body>
</body>
</html>
2.转化为数值型
parseInt(string) |
parseFloat(string) |
Number(string) |
- * /隐式转换 |
(1)parseInt()
整数和浮点数都能转换
<!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>
var n1 = '12';
var n2 = '12.12';
console.log(n1,typeof parseInt(n1)); //12 Number
console.log(n2,typeof parseInt(n2)); //12.12 Number
</script>
</head>
<body>
</body>
</html>
(2)parseFloat()
整数和浮点数都能转换
<!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>
var n1 = '12';
var n2 = '12.12';
console.log(n1,typeof parseFloat(n1)); //12 Number
console.log(n2,typeof parseFloat(n2)); //12.12 Number
</script>
</head>
<body>
</body>
</html>
(3)Number()
<!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>
var n1 = '12';
var n2 = '12.12';
console.log(n1,typeof Number(n1)); //12 Number
console.log(n2,typeof Number(n2)); //12.12 Number
</script>
</head>
<body>
</body>
</html>
(4)隐式转换
<!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>
var n1 = '12'- 10;
console.log(n1,typeof n1); //2 Number
</script>
</head>
<body>
</body>
</html>
(5)数字开头的字符串也可以转化
<!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>
var n1 = '12num';
console.log(parseInt(n1),typeof parseInt(n1)); //12 Number
</script>
</head>
<body>
</body>
</html>
3.转化为布尔型
代表空、否定的值会被转换为 false ,如 ''、0、NaN、null、undefined
其余值都会被转换为 true
<!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>
var n1 = '';
var n2 = 12
console.log(Boolean(n1),Boolean(n2)); //false true
</script>
</head>
<body>
</body>
</html>
四.字面量
字面量是在一个固定值的表示法,通俗来说,就是字面量表示如何表达这个值。
数字字面量:8, 9, 10
字符串字面量:'黑马程序员', "大前端"
布尔字面量:true,false