> 文章列表 > Vue3总结(持续更新)

Vue3总结(持续更新)

Vue3总结(持续更新)

一:ES6新特性
栈内存:存放基本数据类型的变量名和变量值;复杂(引用)数据类型的变量名和引用地址
堆内存:复杂数据类型的变量值

1.let命令
var 和 let的区别(var的三大bug):

  • 作用域:var变量全局范围内有效,let变量仅在块级作用域内有效
  • 变量提升:var会发生变量提升现象,而let不会,即let必须先定义再使用
  • 变量重复声明:var在相同作用域内可以被重复声明,而let不允许重复声明

2.const命令
是一个只读的常量,声明时,必须赋初值,一旦声明,栈值就不能改变,

  • 对于基本数据类型,声明后值是不能改变的
  • 对于复杂数据类型,栈内的地址不能变,数据值(堆内存)是可以变的

3.变量的结构赋值
包括数组和对象的结构赋值

  • 数组: let [a, b, c] = [10, 20, 30];

  • 对象:let { name1, age1 } = { name1: ‘李四’, age1: 29 };
    4.对象的扩展
    包括属性的简写,方法的简写,扩展运算符,模版字符串

  • 属性的简写::当属性名和值的变量名相同时,触发对象的属性简写let name = ‘张三’; const person ={name}

  • 方法的简写:去掉冒号和function,
    eat() {
    return ‘三顿’
    }

  • 扩展运算符:三个点(…).可遍历属性。.三个点放在对象前,用于对象的合并等
    let z = { a: 10, b: 20 }
    let n = { …z, c: 30 };
    console.log(n) // {a: 10, b: 20, c: 30}

  • 模版字符串:模板字符串用反引号()表示,嵌入变量用${}表示 let idCard = '360424198612121539'; let str = 身份证号码${idCard} `
    5.箭头函数
    主要针对的是函数变量,即带有函数名的函数;使用箭头( => )连接参数列表和函数体
    箭头函数的简化:

  • 参数只有一个时,括号可以省略
    const say = msg => {
    函数体
    }

  • 无参数时,括号不能省略
    const say = () => {
    函数体
    }

  • 参数多个时,括号不能省略
    const say = (x,y) => {
    函数体
    }

  • 可变参数,括号不能省略
    const say = (…args) => {
    函数体
    }

  • 函数体只有一条return时,可以省略大括号和return关键字
    const say2 = x =>x+1

  • 函数体包含多条语句时,不可以省略大括号和return关键字

  • 函数体中有一个对象时,省略大括号和return关键字后需要用小括号
    -const student2 = () => ({ name: ‘张三’, age: 25 })

6.模块语法

  • export:规定模块的对外接口,如果希望外部能够获取模块内的某个变量/函数/类,就必须在模块中使用export输出该变量/函数/类
    const PI = 3.1415
    const add = (a, b) => a + b
    export { PI as pi, add } //可以合在一起导出,也可以分别导出

  • import:引入模块
    //import { pi as PI, add } from ‘./demo1.js’
    import * as abc from ‘./demo1.js’ // 导入全部
    console.log(‘pi的值为:’, abc.pi)
    console.log(‘调用add函数:’, abc.add(40, 50))

  • export default:每个模块【只能够使用一次】,可以导出变量,常量,函数,类,匿名函数
    export default (a, b) => a + b //默认导出的是匿名函数
    对于export default导出的,导入时,不需要{},并且变量名可以随意
    import 你家的孩子 from ‘./demo2.js’
    console.log(‘变量值为:’, 你家的孩子(3, 6))
    7.Promise异步编程
    Promise对象要点:
    原理:异步执行,当接口请求后,可以去做其他事情,等接口返回成功再渲染页面,接口返回失败也会有相应的提示

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>8-1 promise对象.html</title>
</head><body><script>/*Promise对象要点:1.Promise对象是用于执行异步操作的2.可以使用Promise构造函数来创建实例对象3.Promise对象的.then方法调用后,返回的还是一个Promise对象4.Promise对象的.catch方法调用后,返回的还是一个Promise对象*//*步骤1:创建Promise对象1.调用构造函数,来创建Promise对象2.构造函数的参数,是一个函数【参数是函数】,它负责执行业务3.该函数接受2个参数作为参数4.第一个参数:是resolve(成功的)函数,可以是其他5.第二个参数:是reject(拒绝的)函数*/const p1 = new Promise((resolve, reject) => {console.log('1.异步请求开始,异步讨债开始')// 去讨债开始......// ......漫长的过程,....可以去干其它事情....  // 讨债结束.....const flag = falseif (flag) { //resolve方法执行后,则执行then的第一个参数return resolve('还钱成功!')//异步调用,只支持一个参数(可以是一个对象)} else {return reject('还钱失败!')//它们前面加上return语句,这样就不会有意外。}})       /*要点:1.then方法,也接收2个函数作为参数,但第二个参数是可选的2.当resolve方法调用时,会触发then的第一个参数3.当rreject方法调用时,会触发then的第二个参数*///步骤2:调用异步执行.then方法const p2 = p1.then((a) => {// throw new Error('4.人为模拟异常,还的钱是假钱...')console.log('3.进来了then的第一个方法,还钱成功了,用钱干什么,买手机。。。', a)}// , () => {//第二个参数是可选的//     console.log('3.进来了then的第二个方法,,还钱失败了,怎么办。。。')// })//还可以继续.then/*要点:1.catch方法,也接收1个函数作为参数2.当【前面】的方法中有异常时,才会触发catch的参数*/// 步骤3.调用catch方法,then方法有效const p3 = p2.catch((e) => {console.log(`catch方法被调用了${e}`)}).finally(() => { //无论如何都会执行console.log('finally')})console.log('2.底部的代码调用了,将在当前脚本所有同步任务执行完才会执行点then异步代码')//Promise 新建后立即执行,所以首先输出的是Promise。
//然后,then方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以resolved最后输出。</script>
</body>
</html>