美文网首页
深入理解 ES6(2)

深入理解 ES6(2)

作者: 没了提心吊胆的稗子 | 来源:发表于2019-04-02 14:38 被阅读0次
  1. 在定义函数时可以传入默认参数值,当不为有默认参数值的参数传入值或者主动为其传入undefined时,会使用这个默认值。
  2. 在ES6中,如果一个函数使用了默认参数值,arguments对象会保持与命名参数分离。
function mixArgs(first, second="b") {
      console.log(arguments.length);
      console.log(first === arguments[0]); 
      console.log(second === arguments[1]);
      first = "c";
      second = "d";
      console.log(first === arguments[0]);
      console.log(second === arguments[1]);
    }
mixArgs("a");  
// true false false false
  1. Rest参数和扩展
    不确定函数有几个参数时,可以使用...来动态确定参数数量
function sum(...m) {
      let total = 0;
      for (let i of m) {
        total += i;
      }
      console.log(total);
    }
sum(2,4,98,40);

在调用sum函数时,可以传入不同数量的参数。
...可以使用在扩展数组中

let [x,y] = [4, 8];   // x, y对号入座,即数组模型的解构
let [x,...y] = [4, 8, 9, 1, 3];   // x对号入座,y就扩展为一个包含四个元素的数组
  1. Promise语法, 封装的时候通过链式调用.then的方式获取回调,在resolve中处理结果,也可以用Promise.all()API同时调用多个接口和请求,然后通过解构一一返回结果以减少代码的冗余。
let checkLogin = function () {
      return new Promise(function (resolve, reject) {
        let flag = document.cookie.indexOf("userId") > -1 ? true : false;

        if(flag=true){
          resolve({
            status: 0,
            result: true
          });
        }else{
          reject("error");
        }
      });
};
let getUserInfo = () => {
      return new Promise((resolve, reject) => {
        let userInfo = {
          userId: "559"
        };
        resolve(userInfo);
      })
};
checkLogin().then((res) => {
      if(res.status === 0){
        console.log("success");
        return getUserInfo();
      }
    }).catch((error) => {
      console.log(`errors:${error}`);
    }).then((res2) => {
      console.log(`userId:${res2.userId}`);
});

Promise.all([checkLogin(), getUserInfo()]).then(([res1, res2]) => {
      console.log(`result1:${res1.result}, result2:${res2.userId}`);
    });

Promise.all()中的参数必须是Promise对象,不能随便传别的参数进去。

  1. 模块化机制
    export导出,import导入,需要注意的是,如果导出为变量,导入就要用花括号来接受变量
// sum.js
export let sum = (x,y)=>{
  return x + y;
};
// main.js
import {sum, minus} from "./util";

也可以通过*封装然后调用

相关文章

网友评论

      本文标题:深入理解 ES6(2)

      本文链接:https://www.haomeiwen.com/subject/lefibqtx.html