ES6 解构数组

  1. // 在设计Javascript时,很明显遗漏了数组复制功能。而在ES5中,开发者使用concat()来克隆数组

  2. var colors = ["red", "blue", "pink"];

  3. var cloneColors = colors.concat();

  4. console.log(cloneColors); // ["red", "blue", "pink"]

  5. console.log(Object.is(colors, cloneColors)); // false

  6. // concat()方法设计初衷是连接两个数组,如果调用时不传递参数则返回当前数组的副本

  7. var colors2 = ["black", "green"];

  8. console.log(colors.concat(colors2)); // ["red", "blue", "pink", "black", "green"]


  9. // ES6 克隆数组

  10. let [...cloneArray] = colors;

  11. console.log(cloneColors) //  ["red", "blue", "pink"]

  12. // 可以混合使用对象解构和数组解构来创建更多的复杂的表达式

  13. // 6.混合解构

  14. let node = {

  15. type: "json",

  16. age: 1,

  17. loc: {

  18. start: {

  19. line: "solid",

  20. column: 20

  21. },

  22. end: {

  23. line: "double",

  24. column: 21

  25. },

  26. range: [0, 3]

  27. }

  28. };

  29. let {loc: {range: [startIndex]}} = node;

  30. console.log(startIndex); // 0

  31. let {

  32. loc: {start},

  33. loc: {

  34. range: [index]

  35. }

  36. } = node;

  37. console.log(start.line); // solid

  38. console.log(index);      // 0




  1. // 7.解构参数

  2. function setCookie(name, value, options){

  3. options = options || {};

  4. let secure = options.secure,

  5. path = options.path,

  6. domain = options.domain,

  7. expires = options.expires;

  8. // 设置cookie代码

  9. }

  10. // name,value是必须的, 函数的声明部分,无法辨识函数的预期函数,必须通过阅读函数体才可以确定具体参数的情况

  11. setCookie("type","js", {

  12. secure: true,

  13. expires: 700

  14. });

  15. /*

  16.            function setName(name,options) {

  17.                let {secure,path,domain,expires} = options;

  18.                console.log(name);

  19.            }

  20.            //  Cannot destructure property `secure` of 'undefined' or 'null'

  21.            // 如果解构函数赋值表达式的右值为null和undefined,则程序会报错

  22.            setName("zhangsan",null);

  23.            setName("zhangsan");

  24.        */



  1. // 8.解构参数的默认值

  2. const defaultParam = {

  3. secure : false,

  4. path : "/",

  5. domain : "example.com",

  6. expires : new Date(Date.now() + 360000000)

  7. }

  8. function setName(name,

  9.             {

  10.                secure = defaultParam.secure,

  11.                path = defaultParam.path,

  12.                domain = defaultParam.domain,

  13.                expires = defaultParam.expires

  14.             } = defaultParam

  15.        ) {

  16. console.log(name);

  17. console.log(expires);

  18. }

  19. setName("admin");  // admin

  20. // Mon Jun 24 2019 22:03:22 GMT+0800 (中国标准时间)



评论 (0)

发表评论