美文网首页
对象的解构赋值&函数参数的默认值

对象的解构赋值&函数参数的默认值

作者: 索伯列夫 | 来源:发表于2018-12-02 12:05 被阅读0次

对象的结构赋值

对象的解构赋值用于从一个对象取值,相当于将目标对象自身的所有可遍历的(enumerable)、但尚未被读取的属性,分配到指定的对象上面。所有的键和它们的值,都会拷贝到新对象上面。

let {foo,bar} = {foo: 'aaa',bar: 'bbb'}
foo //bar
bar //bbb

实际上,对象的解构赋值是下边形式的简写:

let { foo: foo, bar: bar } = { foo: "aaa", bar: "bbb" }

对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

对象的解构用来指定默认值:

var {x=3} = {}
x //3
var {x,y=5} = {x:1}
x //1
y //5

函数的默认参数

设置默认参数,可以直接写在参数定义后边

function log(x, y = 'World') {
  console.log(x, y);
}

log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello

与解构赋值结合使用:

最直接的例子:

function foo({x, y = 5}) {
  console.log(x, y);
}

foo({}) // undefined 5
foo({x: 1}) // 1 5
foo({x: 1, y: 2}) // 1 2
foo() // TypeError: Cannot read property 'x' of undefined

为了解决上边最后一个问题,我们可以这么做:

function foo({x, y = 5} = {}) {
  console.log(x, y);
}

foo() // undefined 5

再看一个例子

function fetch(url, { body = '', method = 'GET', headers = {} }) {
  console.log(method);
}

fetch('http://example.com', {})
// "GET"

fetch('http://example.com')
// 报错

改进,双重默认值

function fetch(url, { body = '', method = 'GET', headers = {} } = {}) {
  console.log(method);
}

fetch('http://example.com')
// "GET"

相关文章

  • ES6-函数参数的赋值

    函数参数的解构赋值: 函数参数解构赋值的默认值: 函数参数解构赋值的默认值undefined:

  • 解构赋值默认值与函数参数默认值

    参数默认值可以与解构赋值的默认值,结合起来使用。 上面代码只使用了对象的解构赋值默认值,没有使用函数参数的默认值。...

  • 10- Function 扩展

    1、函数参数的默认值 2、与解构赋值默认值结合使用 3、区分如下函数参数解构赋值的两种方式 区别:写法一函数参数的...

  • ES6 ---- 函数

    函数参数的默认值 与解构赋值配合使用 rest参数 箭头函数 使用箭头函数的注意点 函数体内的this对象,是定义...

  • es6

    解构赋值 默认值 解构赋值 解构默认值和参数默认值的区别

  • ES6 2.解构赋值

    解构赋值 解构赋值的分类 数组解构赋值 对象解构赋值 字符串解构赋值 布尔值解构赋值 函数参数解构赋值 数值解构赋...

  • es6学习-解构赋值

    解构赋值可以给默认值 为非同名局部变量赋值 嵌套对象解构 嵌套数组解构 不定元素 与函数参数一样,不定元素必须为最...

  • ES6解构赋值、交换两个变量的值、设置函数默认值、模板字符串、箭

    1,解构赋值 解构赋值主要包括数组的解构赋值、对象的解构赋值、字符串的解构赋值、函数参数的解构赋值。 (1)数组的...

  • 解构赋值,设置函数默认值,箭头函数

    1,解构赋值 解构赋值主要包括数组的解构赋值、对象的解构赋值、字符串的解构赋值、函数参数的解构赋值。 (1)数组的...

  • ES6 函数的扩展

    函数参数的默认值 ES6允许为函数的参数设置默认值,即直接写在参数定义的后面 函数参数默认值与解构赋值默认值结合使...

网友评论

      本文标题:对象的解构赋值&函数参数的默认值

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