zoukankan      html  css  js  c++  java
  • ES6 解构

    解构:按照一定模式,从数组和对象中提取值,对变量进行赋值

    let[a,b,c]=[1,2,3];

    只要等号两边的模式相同,左边的变量就会被赋值予对应的值。例:let[a,[[b],c]]=[1,[[2],3]]

    默认值:ES6内部使用严格相等运算符(===),判断一个位置是否有值,所有,只有当一个数组成员严格等于undefined,默认值才会生效,如果默认值是一个表达式,那么这个表达式

    是惰性求值的(只有在用到的时候,才会求值)

    let[x=1]=[undefined]  //x=1

    function f(){

         console.log(“aaa”);

    }

    let [x=f()]=[1];    //x =1

    对象的解构赋值:

    let {foo,bar}={foo:“aaa”,bar:“bbb”}

    变量必须与属性同名才能取到正确的值

    let {baz}= {foo:“aaa”,bar:“bbb”}

    baz   //undefined

    字符串的解构赋值:

    const [a,b,c,d,e]=“hello”;

    a  //h

    b  //e

    c  //l

    d  //l

    e  //o

    数值和布尔值的解构赋值:

    解构赋值时,如果等号右边是数值和布尔值,则会先转为对象

    let {toString:s}=123;

    s===Number.prototype.toString   //true

    let {toString:s} = true;

    s===Boolen.prototype.toString    //true

    函数参数的解构赋值

    function  add([ x,y ]){

      return  x+y;

    }

    add ([1,2]);    // 3

    函数add的参数表面上是一个数组,但在传入参数的那一刻,数组参数就被解构成变量x和y

    默认值与解构赋值结合使用:

    function  foo ({x,y=5}){

      console.log(x,y);

    }

    foo({  })       // undefined,5

    foo({x=1})       // 1,5

    只有当函数foo的参数是一个对象时,变量x和y才会通过解构赋值而生成,如果函数foo调用时参数不是对象,变量x和y就不会生成,从而报错。只有参数对象没有y属性时,y的默认值5才会生效

    双重默认值

    function  fetch(url,{method=“GET”}={})

    fetch(‘http://example.com’)         //GET

  • 相关阅读:
    centos7 python3.5中引入sqlite3
    转载nginx+uwsgi+django
    浮点数计算精度丢失问题#W01
    五大JavaScript 自动化测试框架
    deepin 安装Samba并设置为开机启动
    搭建macaca android环境
    open-MAT 安装部署
    基于Jmeter BackEnd+InfluxDB+Grafana实现性能指标实时可视监控
    使用开源libimobiledevice查看iphone信息
    Java 开发者必备测试框架
  • 原文地址:https://www.cnblogs.com/qrf1997/p/11015093.html
Copyright © 2011-2022 走看看