• ES6的新增属性


    为什么要新增那?可以看到如下代码,会造成变量泄露,这就是ES5的BUG,是var的全局作用域造成的.
    1.   for (var i = 0; i < 5; i++) { }
    2.         console.log(a[i]);
    了解一下什么场景我们使用let :
    1.基本类型的赋值,用let
    2.主观想让块级作用域生效
    3.for循环中
    const
    1.常用与常量,不改变的值
    前提:基本类型
    如 const PI=3.1415986(固定的值)
    2.与let相同,都具有块级作用域,都有临时性死区(变量不能提前)
    3.引用类型的值一律用const来声明,但是 要确保数据为引用类型
    js事件循环机制
    耗时操作等于异步操作,所以会等同步操作完毕后在执行异步操作
    1.     console.log(1);
    2.     setTimeout(function () {
    3.         console.log(2)
    4.     })
    5.     console.log(3);//输出结果为1 3 2
    ES6解构赋值
    1. // ES5解构赋值
    2.     var a, b, c = [1, 2, 3]
    3.     console.log(a, b, c);//输出undefined undefined (3) [1, 2, 3]
    4.     // ES6解构赋值
    5.     let [a, b, c] = [1, 2, 3]
    6.     console.log(a, b, c);//输出1 2 3
    交换值如果是 E5 .就要声明一个变量来交换比较麻烦,我们用 ES6就简单地多,只要=左右解构相同我们就可以解构赋值了
    1.  // ES5解构赋值互换
    2.     let x = 1;
    3.     let y = 2;
    4.     let t = null;
    5.     t = x;
    6.     x = y;
    7.     y = t;
    8.     console.log(x, y);
    9.     // ES6解构赋值互换
    10.     [x, y] = [y, x];
    11.     console.log(x, y);//输出都是2 1
    还有一种特殊情况就是=左右不匹配,如下,那么就会有一个值是空
    1. let [a, b] = [1, 2, 3]
    2.     console.log(a, b);//输出1,2
    函数返回值进行解构赋值
     
    1.  // 函数返回值, 进行解构赋值
    2.     function fn() {
    3.         return [1, 2, 3]
    4.     }
    5.     let [a, b, c] = fn()
    6.     console.log(a, b, c);//输出1 2 3
    利用函数传参进行解构赋值
    1.  // 函数传参,进行解构赋值
    2.     // ES5函数传参
    3.     function add(a, b, c) {
    4.         return a + b + c
    5.     }
    6.     const arr = [1, 2, 3];
    7.     console.log(add(arr[0], arr[1], arr[2]));//输出6
    8.     // ES6函数传参
    9.     const arr=[1, 2, 3];
    10.     console.log(add(arr));//输出6
    练习题:如何将params变成对象
    1. const params = ["name=zhangsan", "age=18"]
    2.     function fn([name, age]) {
    3.         return {
    4.             name: name.split("=")[1],
    5.             age: age.split("=")[1]
    6.         }
    7.     }
    8.     console.log(fn(params));
    对象的解构赋值, 左右两边也要匹配
    1. // 对象的解构赋值
    2.     // 注意如果不给a,b,给x,y虽然结构相同,但是属性名不同,无法解构
    3.     let { a, b } = { a: 1, b: 2 }
    4.     console.log(a, b);//输出1 2
    与数组解构赋值的不同点,数组除了解构以外,还有变量所在的顺序,对象只匹配属性名,没有顺序.对象本身是无序的,数组是有序的,这就是两者的区别.
    练习题:如何在对象取值
    1.  const actor = {
    2.         name: "zhangsan",
    3.         age: 20,
    4.         fn: function () {
    5.             console.log("哈哈");
    6.         }
    7.     }
    8.     // ES5调用值
    9.     console.log("姓名:" + actor.name);
    10.     console.log("年龄:" + actor.age);
    11.     actor.fn()
    12.     // ES6调用值
    13.     let { name, age, fn } = actor
    14.     console.log("姓名:" + name);
    15.     console.log("年龄:" + age);
    16.     fn()
    常见应用场景
    1.  // 常见应用场景
    2.     // ES5常用
    3.     console.log(Math.pow(2, 3));
    4.     console.log(Math.random());
    5.     console.log(Math.min(43, 5, 30, 8));
    6.     console.log(Math.max(43, 5, 30, 8));
    7.     // ES6常用
    8.     let {
    9.         min,
    10.         max,
    11.         pow,
    12.         random
    13.     } = Math
    14.     console.log(min(3, 2, 6));
    15.     console.log(max(3, 2, 6));
    16.     console.log(pow(3, 2, 6));
    17.     console.log(random());
    18.  let {
    19.         isArray,
    20.         from,
    21.         of
    22.     } = Array
    23.     console.log(isArray())
    24.     console.log(from())
    25.     console.log(of())
    26.     let {
    27.         splice,
    28.         slice,
    29.         sarch
    30.     } = string
    31.     console.log(splice())
    32.     console.log(slice())
    33.     console.log(sarch())
    java数据交互不匹配问题
    1. // java数据交互时,传来的对象不符合
    2.     // 需求是,调出useaName这个值,但是返回的是useaname
    3.     let { useaname: useaName } = {
    4.         useaname: "Mike"
    5.     }
    6.     console.log(useaName);//输出Mike
    练习题:
    1.  // 练习:把typeinfoDes 转为 typeInfo输出
    2.     {
    3.         typeinfoDes: "类型描述"
    4.     }
    5.     let { typeinfoDes: typeInfo } = {
    6.         typeinfoDes: "类型描述"
    7.     }
    8.     console.log(typeInfo);
    字符串的解构赋值
    1.  // 字符串的解构赋值
    2.     const [a, b, c] = "why"
    3.     console.log(a, b, c);
    4.     let { length: len } = "why"
    5.     console.log(len);
    6.     // 伪数组也是对象,他的属性名就是他对应的下标
    7.     // 数组和伪数组都是对象,因为下标索引就是属性名,子项是属性值
    8.     // function也是对象,他的形参就是他的属性名
    函数参数的解构也可以使用默认值
    1.  // ES5 是如何赋予默认值
    2.     function show(a, b) {
    3.         var a = a || 10
    4.         var b = b || 20
    5.         return [a, b]
    6.     }
    7.     console.log(show());
    8.     // ES6 是如何赋予默认值,有实参优先实参,空实参的时候才会调用形参的值
    9.     function show(a = 10, b = 20) {
    10.         return [a, b]
    11.     }
    12.     console.log(show(5, 6));
    模板字符串``
    反引号包裹,${}是模板,块中可调用方法/写表达式/展示变量
    1.  function add() {
    2.         return 1 + 1;
    3.     }
    4.     console.log(`1+1=${add()}`);
    5.     console.log(`1+1=${true?111:0}`);
    认识箭头函数
    1. //当形参只有一个的时候,可以省略小括号
    2. //当return,只有一句话的时候,大括号可以省略
    3. // ES5函数
    4.     function show() {
    5.         console.log("show");
    6.     }
    7.     show()
    8.     // ES6箭头函数
    9.     const show = () => {
    10.         console.log("show");
    11.     }
    12.     show()
    13. //或
    14.  const show = () => console.log("show");
    15.     show()
    16.  // 在省略写法
    17.     const show = (name) => console.log("show" + name);
    18.     show("哈哈")
    19.     // 最省略
    20.     //当形参只有一个的时候,可以省略小括号
    21.     //当return,只有一句话的时候,大括号可以省略
    22.     const show = name =>name
    23.     console.log( show("哈哈"));
    箭头函数可以结合变量解构使用
    1.  const person = {
    2.         first: "mike",
    3.         last: "jackson"
    4.     }
    5.     // ES6函数
    6.     let fullName = ({ first, last }) => `${first} ${last}`;
    7.     console.log(fullName(person));
    8.     // ES5函数
    9.     function fName(p) {
    10.         return `${p.first} ${p.last}`
    11.     }
    12.     console.log(fName(person));
    练习题:用箭头函数写出每隔疫苗输入当前时间
    1.   // 练习: 用箭头函数写出每隔一秒输出当前时间,格式  2022-07-09  06:07:01
    2.     var h1 = document.querySelector("h1")
    3.     setInterval(() => {
    4.         const date = new Date()
    5.         const year = date.getFullYear()
    6.         const month = date.getMonth() + 1
    7.         const day = date.getDate()
    8.         const hour = date.getHours()
    9.         const minute = date.getMinutes()
    10.         const second = date.getSeconds()
    11.         h1.innerText = `${year}-${month.toString().padStart(2, "0")}-${day}  ${hour}:${minute}:${second.toString().padStart(2, "0")}`
    12.     }, 1000)

  • 相关阅读:
    考虑储能电池参与一次调频技术经济模型的容量配置方法(matlab代码)
    dockerfile关键字
    区块链技术与AI:IT领域的未来合作伙伴
    【好文翻译】Difference Between Next.js vs. Nuxt.js vs. Nest.js
    sklearn机器学习——day14
    基于萤火虫算法的线性规划求解matlab程序
    Intel汇编-函数使用全局变量传递数据
    7.21 SpringBoot项目实战【图书借阅】并发最佳实践:细粒度Key锁、数据库乐观锁、synchronized、ReentrantLock
    【NAS备份】摆脱丢数据的噩梦,群晖备份硬核实战教程分享
    Lifecycle 一篇文章就够了
  • 原文地址:https://blog.csdn.net/sl105105/article/details/125880415