谷粒商城-基础篇-DAY2-前端基础ES6

107 阅读1分钟

一、简介

1.前端技术栈类比

0DB3C6B3-B12A-4890-9861-E2FEC42B6B26.png

二、ES6

1.let、const声明变量

 {
            // var 声明的变量往往会越域
            // let声明的变量有严格局部作用域
            var a = 1;
            let b = 2;
        }
        console.log(a); //1
        console.log(b); //b is not defined 

        {
            // var可以声明多次
            // let只能声明一次
            var m = 1;
            var m = 2;
            let n = 1;
            let n = 2;
            console.log(m);//2
            console.log(n);//n has already been declared
        }
        const a = 1;
        a = 3;//声明之后不允许改变

2.解构表达式

<script>
    let arr = [1,2,3];
    //常规做法
    // let a = arr[0];
    // let b = arr[1];
    // let c = arr[2];
    //数组解构
    let[a,b,c] = arr;
    console.log(a,b,c)

    const person = {
        name: "jack",
        age: 21,
        language: ['java','js','css']
    }
    //常规做法
    // const name = person.name;
    // const age = person.age;
    // const language = person.language;
    //对象解构
    const{name:abc,age,language} = person;
    console.log(abc,age,language)
</script>

3.字符串扩展

      let str = "hello.vue";
      console.log(str.startsWith("hello"));//true
      console.log(str.endsWith(".vue"));//true
      console.log(str.includes("e"));//true
       //字符串模板
      let ss = `<div>
                   <span>hello world<span>
               </div>`
      console.log(ss);

      //字符串插入变量和表达式,变量名写在${}
      let info = `我是${abc},今年${age}岁了`
      console.log(info);

4.函数优化

<script>
//1.函数参数默认值
function add2(a,b = 1){
    return a + b;
}
console.log(add2(20))
//2.不定参数
function fun(...values){
    console.log(values.length)
}
fun(1,2)//2
fun(1,2,3,4)//4
//3.箭头函数
var print = obj => console.log(obj);
print("箭头函数传入参数");
var sum = (a,b) => console.log(a+b);
sum(1,2);
//实战:箭头函数结合解构表达式
const person = {
    name: "jack",
    age: 21,
    language: ['java','js','css']
}
var hello = (person) => console.log("hello"+person.name);
hello(person);
var hello = (person) => console.log("hello"+person.name);
hello(person);
var hello2 = ({name})=>console.log("hello2"+name);
hello2(person);
</script>

5.对象优化

<script>
        const person = {
            name: "jack",
            age: 12,
            language: ['java','js','css']
        }
        console.log(Object.keys(person));   //["name","age","language"] 返回三个key
        console.log(Object.values(person)); //["jack",21,Array(3)] 返回三个值
        console.log(Object.entries(person));//[Array(2),Array(2),Array(2)] 返回三个kv

        const target = {a: 1};
        const source1 = {b: 2};
        const source2 = {c: 3};
        Object.assign(target,source1,source2);
        console.log(target);//{a: 1, b: 2, c: 3}

        //2.声明对象简写
        const age = 23;
        const name = "张三";
        //可以简写
        const person1 = {age:age,name:name}
        const person2 = {age,name}
        //3.对行函数属性简写
        const person3 = {
            name: "jack",
            //以前
            eat: function(food){
                console.log(this.name + "在吃" + food)
            },
            //箭头函数,this不能使用
            eat2: food => console.log(person3.name + "在吃" + food),
            eat3(food){
                console.log(this.name + "在吃" +food);
            }
        }
        person3.eat("香蕉");//jack在吃香蕉
        person3.eat2("冰棍");//jack在吃冰棍
        person3.eat3("苹果");//jack在吃苹果
        
        //4.对象扩展运算符
        //拷贝对象
        let person4 = {name:"Amy",age:15}
        let someone = {...person4}
        console.log(someone)//{name: 'Amy', age: 15}

        //合并对象
        let age1 = {age:15}
        let name1 = {name : "Amy"}
        let p1 = {...age1,...name1}
        console.log(p1)//{age: 15, name: 'Amy'}
    </script>

6.map、reduce

  <script>
    //1.map()接收一个函数,将原数组的所有元素用这个函数处理后,放入新数组返回
    let arr = ['1','20','-5','3']
    // arr = arr.map((item) => {
    //     return item*2;
    // });
    arr = arr.map(item => item*2)
    console.log(arr);//[2, 40, -10, 6]

    //2.reduce
    //arr.reduce(callback,[initialValue])
    //1.previousValue(上次调用回调返回的值,或者是提供的初始值(initialValue))
    //2.currentValue(数组中当前被处理的元素)
    //3.index(当前元素在数组的索引)
    //4.array(调用reduce的数组)
    let result = arr.reduce((a,b)=>{
        console.log("上一次处理后"+a);
        console.log("当前正在处理"+b);
        return a+b;
    });
    console.log(result)
</script>

282F355B-56D7-4807-9A4B-1A37313D7246.png

7.Promise

<body>
    <script>
        //1、Promise可以封装异步操作
        function get(url, data) {
            return new Promise((resolve,reject) => {
                $.ajax({
                    url: url,
                    data: data,
                    success: function(data){
                        resolve(data)
                    },
                    error:function(err){
                        reject(err)
                    }
                })
            });
        }

        get("user.json")
        .then((data)=>{
            console.log("用户查询成功",data)
           return get(`user_course_${data.id}.json`);
        })
        .then((data)=>{
            console.log("课程查询成功",data)
            return get(`couse_score_${data.id}.json`)
            
        }).then((data)=>{
            console.log("成绩查询成功",data)
        });
        
    </script>
</body>
</html>

8.模块化

导出

var name = "jack"
var age = 22
export{name,age}

const util = {
    sum(a, b) {
        console.log(a+b);
        return a + b;
    }
}
//不仅可以导出对象,一切js都可以导出
export{util}

导入

import util from "./hello.js"
import { name, age } from "./user.js"
util.sum(1,2);
console.log(name);