数据类型
在计算机中,不同的数据所占的存储空间是不同的,为了便于把数据分成所需内存空间大小不同的数据,充分利用存储空间,于是定义了不同的数据类型
变量的数据类型
变量是用来存储值的所在处,他们有名字和数据类型。
- JavaScript是一种弱类型或者说动态语言。这意味着不用提前声明变量的数据类型,再程序运行过程中,类型会被自动确定
- 在JS中变量的数据类型是可变的
数据类型的分类
JS把数据类型分为两类
- 简单数据类型(Number,String,Boolean,Undefined,Null)
- 复杂数据类型(object)
简单数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型,包含整型值和浮点型值 | 0 |
Boolean | 布尔值类型,如true、false,等价于1和0 | false |
String | 字符串类型,在js中,字符串都带引号 | “” |
Undefined | var a;声明变量却没赋值,此时a = Undefined | undefined |
Null | 声明变量为空值 | null |
数字型 Number
1.数字型进制
最常见的进制有二进制,八进制,十进制,十六进制
在JS中八进制的前面加0,十六进制前面加0x
2.数字范围
console.log(Number.MAX_VALUE); //最大值
console.log(Number.MIN_VALUE); //最小值
3.数字型三个特殊值
- Infinity 代表无穷大,大于任何值 可以通过最大值乘以一个大于1的数拿到的就是无穷大
- -Infinity 代表无穷小,小于任何值 通过负的最大值乘以一个大于1的数拿到的就是无穷小
- NaN Not a nymber ,代表一个非数值 可以通过isNaN()来判断传入的值是否是数字型,返回值是Boolean类型,是返回fasle,不是返回true
字符串型 String
字符串类型可以是引号中的任意文本,其语法为双引号“ ”和单引号‘ ’
因为HTML标签里面的属性使用双引号,JS中更建议使用单引号
1.如果字符串中还要求有引号,可以采用外双内单或外单内双
var speak1 = '你讲话真"直白"';
var speak2 = "你讲话真'直白'";
2.字符串转义字符
转义符 | 解释说明 |
---|---|
\n | 换行符 |
\ | 斜杠 |
’ | 单引号 |
" | 双引号 |
\t | tab缩进 |
\b | 空格 b是blank的意思 |
3.字符串长度
字符串是由若干字符组成的,这些字符的数量就是字符串的长度,通过字符串的length
属性可以获取整个字符串的长度。
<script>
var speak1 = '开始吧,1,2 3,4';
alert(speak1.length);//11 空格也算
</script>
4.字符串拼接
多个字符串之间可以使用+
进行拼接,其拼接方式为: 字符串 + 任何类型 = 拼接后的新字符串
拼接前会把与字符串相加的任何类型转成字符串,再拼接成一个新的字符串
<script>
console.log('12'+12); //1212
console.log('明天'+"快乐"); //明天快乐
console.log(12+12);//24
</script>
布尔型 boolean
布尔类型只有2个值:true和false
在加法运算中true相当于1,false相当于0
<script>
var flag1 = true;
var flag2 = false;
console.log(flag1 + 1);//2
console.log(flag1);//true
console.log(flag2 + 1);//1
console.log(flag2);//false
</script>
undefined 和Null
如果一个变量声明未赋值,就是undefined(未定义的数据类型)
var value = undefined;
console.log(undefined+'肯');//undefined肯
console.log(undefined+2); //NaN
null空值
var space = null;
console.log(space+'肯');//null肯
console.log(space+2);//2
console.log(true+space);//1
console.log(false+space);//0
获取检测变量的数据类型
利用 typeof
typeof 变量名
注意:
用prompt获取的值是一个字符串类型的数据
一些浏览器的控制台会对不同数据类型有不同的颜色表示
数据类型转换
转换为字符串
方式 | 说明 | 案例 |
---|---|---|
toString() | 转成字符串 | var num =1; alert(num.toString()); |
String() 强制转换 | 转成字符串 | var num =1; alert(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num =1; alert(num + "字符串"); |
转换为数字型
方式 | 说明 | 案例 |
---|---|---|
parseInt(string) | 将string类型转换成整数数值型 | parseInt('78); |
parseFloat(string) | 将string类型转换成浮点数数值型 | parseFloat('78.89') |
Number() | 强制转换,将string类型转换成数值型 | Number("12" ) |
js隐式转换(- * /) | 利用算数运算隐式转换为数值型 | ’12‘-0 |
转换成布尔型
Boolean()
- 代表空、否定的值会被转换成flase ,如
' '、0、NaN、null、undefined
- 其余值会被转换为true
运算符
运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号
JavaScript中常用的运算符有:
- 算数运算符
- 递增和递减运算符
- 比较运算符
- 逻辑运算符
- 赋值运算符
算数运算符
概述:算数运算使用的符号,用于执行两个变量活值的算数运算
运算符:+,-,*,/,%
描述:加减乘除取模
由于浮点数值的最高精度是17位小数,但在进行算术计算时其精确度远远不如整数
<script>
console.log(0.07 * 100);//7.000000000000001
var number = 0.1 + 0.2;
console.log(number == 0.3); //false
</script>
所以不要直接判断两个浮点数是否相等
(注意在输入的时候,运算符左右需要空格)
递增和递减运算符
前置递增(减)和后置递增(减)
区别:
- 前置则先完成运算后赋值
- 后置则先完成赋值后运算
二者虽然都进行了运算,但在赋值时要注意使用
比较运算符
概念
比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true/false)作为运算符的结果
概览
运算符名称 | 说明 | 案例 | 结果 |
---|---|---|---|
< | 小于号 | 1<2 | true |
> | 大于号 | 1>2 | false |
>= | 大于等于号(大于或等于) | 2 >= 2 | true |
<= | 小于等于号(小于或等于) | 3 <= 2 | false |
== | 判等号(会转型) | 37 == ‘37’ | true |
!= | 不等号 | 37 != 37 | false |
=== | 全等 要求值和数据类型都一致 | 37 === ‘37’ | false |
!== | 不全等,值或数据类型不一致 | 37 !== ‘37’ | true |
逻辑运算符
概念:
逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断
概览
逻辑运算符 | 说明 | 案例 |
---|---|---|
&& | “逻辑与”,简称 “与” and | true&&false |
“逻辑或”,简称“或” or | true false | |
! | “逻辑非”,简称 “非” not | ! true |
由于编辑器问题,逻辑或是||
,其案例是true||false
赋值运算符
概念:
用来把数值赋值给变量的运算符
赋值运算符 | 说明 | 案例 |
---|---|---|
= | 直接赋值 | var usrName = ‘值’ ; |
+=、-= | 加、减一个数后再赋值 | var age =10; age+=5; //age =15 |
*=、/=、%= | 乘、除、取模后再赋值 | var age =2; age *= 5; //age=10 |
运算符的优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++ – ! |
3 | 算数运算符 | 先* / %后+ - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先&& 后 “或” |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |