JavaScript 第二天
一、数据类型
1.1、 数据类型的简介
-
为什么需要数据类型
在计算机当中,不同的数据所需要占用到的存储空间是不相同的,为了方便将数据分成各自所需要占据内存大小不相同的数据,充分的利用存储空间,于是定义了不同的数据类型。
-
变量的数据类型
变量是用来存储值的所在处,它们有各自的名字和相对应的数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。JavaScript是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定:
var age=10; //这是数字类型 var names="张三"; //这是字符串类型
代码在运行时,变量的数据类型会由js引擎根据等于号后面的变量值(xxx=变量值)的数据类型来判断,运行完以后,变量则会确定数据类型。
-
数据类型的分类
- 简单数据类型
- 复杂数据类型
1.2、简单数据类型
简单数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型(含整数和浮点数) | 0 |
Boolean | 布尔值类型(true或false==1或0) | false |
String | 字符串类型(字符串都带“ ”) | “ ” |
Undefined | var x;声明了变量x但没赋值(默认x=undefined) | undefined |
NUll | var x=null; 声明变量x为空 | null |
1.3、获取变量数据类型
-
检测变量的数据类型
typeof 可以用来获取检测变量的数据类型
类型 例子 结果 String typeof"张三" “String” Number typeof 20 “Number” Boolean typeof true/false “Boolean” Undefined typeof undefined “Undefined” Null typeof null “Null” -
字面量
字面量是源码中一个固定值的表示法
- 数字字面量:10,20,2
- 字符串字面量:‘张三’,‘李四’
- 布尔字面量:true,false
1.4、数据类型的转换
-
转换为字符串
方式 说明 案例 toString 转换成字符串 var x=1;alert(x.toString()); String 转换成字符串 var x=1;alert(x.String()); 加号拼接字符串 转换成字符串 var x=1;alert(x+“字符串”); - toString和String使用方式不同,但结果一样
- 三种转换方式,第三种用+拼接字符串转换法也称为隐式转换
-
转换为数字型
方式 说明 案例 parselnt(string)函数 将string类型转成整数数值型 parselnt(‘78’) parseFloat(string)函数 将string类型转成浮点数数值型 parseFloat(‘78.21’) Number()强制转换函数 将string类型转换为数值型 Number(‘12’) js隐式转换(- * l ) 利用算术运算隐式转换为数值型 ‘12’-0 - parselnt和parseFloat单词注意大小写
- 隐式转换是我们在进行算数运算的时候,JS自动转换了数据类型
-
转换为布尔型
方式 说明 案例 Boolean()函数 其他类型转成布尔值 Boolean(‘true’); - 代表空、否定的值会被转换为false,如"、O、NaN、null、undefined
- 其余值都会被转换为true
二、运算符
2.1、运算符的分类
**运算符也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号**
常用运算符:
- 算数运算符
- 比较运算符
- 递增运算符
- 逻辑运算符
- 赋值运算符
2.2、算数运算符
算数运算符是用于两个变量或者多个变量的值进行算术运算
运算符 | 描述 |
---|---|
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余数(取模) |
浮点数的精确度
如果是小数进行运算时(浮点数的最高精确度是17位小数)
var sum=0.1+0.2; //大多数人会以为结果是0.3 但并不是 而是:0.30000000000000004
alert(0.07*100); //大多数人会以为结果是7 但并不是 而是:7.000000000000001
so:不要直接判断两个浮点数相加减!!!!!
2.3、递增和递减运算符
递增和递减运算符概述
如果需要反复给数字变量添加或减去1,可以使用递增(++)和递减(–)运算符来完成。在JavaScript中,递增(++)和递减(–)既可以放在变量前面,也可以放在变量后面。放在变量前面时,我们可以称为前置递增(递减)运算符,放在变量后面时,我们可以称为后置递增(递减))运算符。
注意:递增和递减运算符必须和变量配合使用
递增运算符
递增运算符有两种:前置递增运算符和后置递增运算符
-
前置递增运算符
++num 自加1,类似 num=num+1 前置递增:先加在输出 var num=1; alert(++num + 1); //输出3
-
后置递增运算符
num++ 自加1,类似 num=num+1 前置递增:先输出在加 var num=1; alert(1 + num++); //输出2
2.4、比较运算符
- 比较运算符
概念:比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后个布尔值(true / false)作为比较运算的结果。
符号 | 说明 | 案例 | 结果 |
---|---|---|---|
< | 大于号 | 1<2 | true |
> | 小于号 | 1>2 | false |
>= | 大于等于号(大于或等于) | 2>=2 | true |
<= | 小于等于号(大于或等于) | 3<=2 | false |
== | 判等号 | 10==10 | true |
!= | 不等号 | 10!=10 | false |
=== | 全等 (值和数据类型都一样) | 10===“10” | false |
!== | 不全等(值和数据类型都不一样) | 10!==“10” | false |
-
等号比较
符号 作用 用法 = 赋值 把右边给左边 == 判断 判断两边值是否相等(注意此时有隐式转换) === 全等 判断两边的值和数据类型是否完全相同
2.5、逻辑运算符
概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。后面开发中经常用于多个条件的判断
逻辑运算符 | 说明 | 案例 | 结果 |
---|---|---|---|
&& | 逻辑与(简称与 and) | true&&false | false |
|| | 逻辑或(简称或 or) | true||false | true |
! | 逻辑非(简称非 not) | !true | false |
2.6、赋值运算符
概念:用来把数据赋值给变量的运算符
符号 | 说明 | 案例 | 结果 |
---|---|---|---|
= | 直接赋值 | var names=“张三” | names赋值为张三 |
+=、-= | 加、减一个数后在赋值 | var ages=10; ages+=5; | ages+=5相当于ages=ages+5 |
*=、/=、%= | 乘、除、取模后在赋值 | var ages=10; ages*=5; | ages* =5相当于ages=ages*5 |
2.7、运算符的优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++ – ! |
3 | 算数运算符 | 先 * / % 后 + - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先 && 后|| |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |