javascript第二天
Js的数据类型及转换方式、运算符
- Js的数据类型
(1) 简单类型
① Number 数字类型
② String 字符串类型
③ Boolean 布尔类型
④ Undefined 未定义类型
⑤ Null 值为空类型
(2) 复杂类型
① Array 数组类型
② Function 函数类型 元素.on事件名 = function(){ xxxx }
③ Object 对象类型
(3) 分类展开
① Number 数字类型
1) Js中的数字类型 和 数学中的数字 基本一致 分为两类
- 整型 整数 123
- 浮点型 小数 123.123
2) 八进制数字 和十六进制数字
- 八进制:0nnnn
a) 如果出现8或比8大的数字 就默认转换为十进制
- 十六进制:0xnnnn
a) 使用a-f小写字母 表示10-15的数字
3) Infinity 无穷大
- 任何数除以0 得到
- 数字过大,也会直接显示为infinity
4) NaN
- 当js运算出现错误的时候 就会得到NaN(not a number)
- NaN依然是数字类型数据
5) Typeof 用来获取数据类型的方法
- 用法:typeof 数据 ----> 得到数据类型
6) 注意:在js中 一般不建议大家使用浮点数进行运算,因为存在bug
② 字符串类型
1) 有引号包裹的内容 都是字符串
- “” “ ” “123” “abc” “true” “undefined” “null”
2) 字符串的属性
- Length:长度 获取的是字符串的长度 字符串中包含的字符个数
3) 字符串中每一个字符都会对应一个编号,编号从0开始 按照顺序依次向后排,我们称这种编号为 下标/索引
- 我们可以通过下标 来获取指定的字符
- 写法:字符串[下标]
- 注意:这种方式在ie低版本(ie8-)浏览器中不兼容
4) charAt
- 用法:字符串.charAt(下标) 可以获取到对应下标的字符
③ 布尔类型
1) 有两个值 true 真 false 假
2) 一般多用于判断 和 比较
④ Undefined null
1) Undefined:未定义 变量声明未赋值
2) Null:值为空 变量声明 但是也赋值了 可是赋的值是一个空值
3) 区别:undefined没有值 null有值,但值为空(空地址,拿着这个地址在堆区中找不到对应的数据)
(4) 复杂数据类型
① 复杂类型 和 简单类型 的区别
1) 简单类型数据 存储在栈区 可以直接在栈区中访问到
2) 复杂类型数据 存储在堆区 需要先在栈区获取地址 之后到堆区访问数据
② Object 对象类型数据
1) 编写对象
- 字面量创建对象
- {“属性名1”:属性值,属性名2:属性值,。。。。。。}
- 对象也是一个用来存储js数据的容器 通过属性的方式来存储。 对象的属性分两部分 属性名 : 属性值
a) 属性名:字符串 理论上讲必须加引号, 但是实际也可以省略引号 注意语义化
b) 属性值:可以是任意类型的数据
2) 如何操作对象的属性
- 获取对象属性值: 对象名.属性名
- 设置对象属性值: 对象名.属性名 = 新属性值
③ Function函数类型数据
1) 编写函数
- 函数是用来存储代码的容器
- 创建函数的方式:function 函数名(){函数存储的代码} 函数中的代码并不会自动执行
- 如果想执行函数中的代码 需要调用函数
- 函数调用:函数名();
④ Array数组类型数据
1) 数组的创建方式
- [1,“123”,true,undefined,null,{},function a(){},[]]
- 数组是一个用来存储数据的容器,可以存储任意类型的数据 任意多个
2) 数组的属性
- Length:长度 表示数组中存储的数据个数
3) 数组项:数组中存储的数据被称为数组项
4) 下标/索引:就是数组项的编号 也是从0开始 依次向后排
5) 可以通过下标 获取指定位置的数组项 数组[下标]
- Js数据类型转换
(1) 将其他类型数据转换为数字 强制转换
① Number
1) 用法:Number(要转换的数据)
2) 弊端:将字符串转换为数字的时候 如果字符串中包含数字部分也包含字符部分, 转换结果是NaN
② parseInt/parseFloat
1) parseInt:转换机制为 从数据开头一直向结尾转换,遇到转换不了的内容 或 转换到结尾 就停止转换
- “123abc”; “abc123”
- 用法:parseInt(要转换的数据)
- 用法2:parseInt(要转换的数据,进制) 注意:进制范围为 2-36之间
a) 如果不传进制 默认10进制
- 作用:将其他类型的数据转换为整型数字,如果有小数位 则直接舍弃
2) parseFloat
- 和parseInt基本完全一致 只不过 会保留小数位
③ isNaN
1) 作用:判断一个数据 转换为数字之后 是不是NaN 如果是 值为true 否则 值为false
2) 用法:isNaN(要判断的数据)
(2) 将其他类型数据转换为字符串
① String:String(要转换的数据);
1) 万能转换法 任何数据都可以转换
② toString:要转换的数据.toString();
1) Undefined 和 null 都不能使用
(3) 将其他类型数据转换为布尔
① Boolean:Boolean(要转换的数据);
② 任意复杂类型数据 转换为 布尔值 结果都是true
(4) 隐式类型转换
① 隐式转换为数字 任意数据 *1 / -0 / /1
② 隐式转换为字符串 任意数据 + “”
③ 隐式转换为布尔 !!任意数据
④ 隐式类型转换的性能在所有转换方法中是最好的,因此应该作为首选
- Js运算符
(1) 算数运算符
① + - * / % ++ --
② + 如果两个加数中 有一个是 字符串 +就会执行字符串的拼接
③ % 数字1 % 数字2 ==> 数字1/数字2的余数
1) 5%3==>2 10%3==>1
④ ++ -- 自加 自减
1) 数字++/-- ++/--数字 表示在原数字的基础上+1或-1
2) ++/--写在前面 表示先自加/自减 后打印 写后面 先打印 后自加/自减
(2) 赋值运算符
① = 变量名 = 变量值
② += a+=b a = a + b
③ -= *= /=
(3) 比较运算符
① > < >= <=
② ==判断相等 !=判断不相等
1) 判断相等的时候 只判断值 不判断类型 123==”123” 123==”234”
③ ===判断全等 !==判断不全等
1) 既判断值,也判断类型 如果都相等 就全等 如果有一个不相等就不全等 “123” === 123
(4) 逻辑运算符
① 与运算 && 操作数1 && 操作数2
1) 如果两个操作数的值都是true,则算式的值也是true
2) 只要有一个操作数是false, 则算式的值也是false
3) 全真才真,有假即假
② 或运算 || 操作数1||操作数2
1) 如果两个操作数有一个是true 算式的值就是true
2) 如果两个都是false,则算式的值也是false
3) 全假则假,有真即真
③ 非运算 ! !操作数
1) 作用是取反 true变false false变true
(5) 三元运算符
① 判断条件 ? 条件成立时执行的代码 : 条件不成立时执行的代码
浙公网安备 33010602011771号