js高级(知识回顾)

169 阅读2分钟

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的地址返回
  • 现在的缺点

    • 造成内存的浪费

      • 因为现在的代码是每个对象都有一块空间存储方法
    • 解决:将方法提取到全局

      • 会造成全局污染

        • 将方法添加到原型

定义函数的三种方式

函数声明

函数表达式

构造函数Function