js高级第一天
Swtich-case分支
分支结构
使用场景:等值判断,意味着如果需要判断范围,switch不合适
特点
-
每个case后面都会有break,它的作用是防止穿透,跳出switch结构
-
如果没有添加break,就会有穿透效果--一直往下执行直到碰到break
-
default写在任意的位置
- 建议写在最后
三元表达式
语法: 表达式 ? 操作1 : 操作2
- 语法: 表达式 ? 值1 : 值2
使用场景:根据条件获取值,或者根据条件执行某个操作
最重要的使用场景:在模板中使用
- ajax阶段的模板引擎
- vue/react中的组件模板
while循环和do-while循环
区别
- while是先判断后执行
- do-while先执行一次再判断是否需要循环
各个循环可以混用
其它循环
forEach
map
- 主要用于数据改造
filter
- 主要用于删除和查询
冒泡排序
外层循环控制比较多少轮
内层循环控制每轮比较多少次
细节
- 由于每轮循环都会找到一个最大值,意味着后面的循环的次数可以减少
代码
- let arr = [12, 3, 4345, 123, 2, 234, 3, 54, 5, 67, 5, 8] // 5 // 需求:将数组的值从小到大排序 // 添加一个循环控制比较几轮 for (let i = 0; i < arr.length - 1; i++) { // i = 0 for (let j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { let temp = arr[j] arr[j] = arr[j + 1] arr[j + 1] = temp } } // console.log(arr) }
面向对象
找到能够实现功能的对象,调用它的成员实现相应的操作
有对象就调用,没有就自己封装
简单类型和复杂类型
简单类型:值类型:字符串,数值,bool值
引用类型:对象,数组,函数
特点:如果值类型数据做为参数,那么函数中进行操作操作不会影响原始数据
如果引用类型做为参数,会造成实参和形参指向相同的地址空间,函数中的操作会影响原始数据
创建对象的几种方式
构造函数
-
它是一个函数,可以接收参数
-
它的定义,要求首字母大写
-
不要以普通函数的方式调用构造函数,它会失去构造函数的功能
-
以new 调用构造函数
-
new做了什么
- 创建对象,开辟空间
- 将创建的对象的地址赋值给this
- 为this添加成员并赋值
- 将this的地址返回
-
现在的缺点
-
造成内存的浪费
- 因为现在的代码是每个对象都有一块空间存储方法
-
解决:将方法提取到全局
-
会造成全局污染
- 将方法添加到原型
-
-