解构赋值默认值
destructuring assignment default value
我正在学习 javascript,但在尝试在解构时为变量提供默认值时,我有点受困于 ES6 语法。
基本上,我试图分配一个变量给它一个对象的 属性 的值,如果该值是 false/null/undefined,我希望它是一个空对象。
例如,
let foo = {
prop1: 'hello!',
prop2: null
}
const prop1 = foo.prop1 || {}
const prop2 = foo.prop2 || {}
console.log(prop1) // hello!
console.log(prop2) // {}
这就是我想要的,也是我认为等同于上面的 ES6 糖语法(虽然它不起作用..)
let foo = {
prop1: 'hello!',
prop2: null
}
const { prop1 = {} } = foo
const { prop2 = {} } = foo
console.log(prop1) // hello!
console.log(prop2) // null
但不知何故,有时它似乎在 React 中工作,但其他时候却没有..这是兼容性问题吗?太混乱了!
您可能对 null 和 undefined 之间的区别感到困惑,例如:
const { dogName = 'snickers' } = { dogName: undefined }
console.log(dogName) // what will it be? 'snickers'!
const { dogName = 'snickers' } = { dogName: null }
console.log(dogName) // what will it be? null!
const { dogName = 'snickers' } = { dogName: false }
console.log(dogName) // what will it be? false!
const { dogName = 'snickers' } = { dogName: 0 }
console.log(dogName) // what will it be? 0!
不是,不是兼容性问题
如果没有值,默认值将起作用,这意味着如果它是 undefined
,它将起作用。在您的示例中,您将 null
分配给 prop2
,并且 null
是定义的值。
因此,如果您的 prop2
未定义或未分配给 undefined
,它将起作用
let foo = {
prop1: 'hello!',
prop2: undefined
}
const { prop1 = {} } = foo
const { prop2 = {} } = foo
console.log(prop1) // hello!
console.log(prop2) // {}
我正在学习 javascript,但在尝试在解构时为变量提供默认值时,我有点受困于 ES6 语法。 基本上,我试图分配一个变量给它一个对象的 属性 的值,如果该值是 false/null/undefined,我希望它是一个空对象。 例如,
let foo = {
prop1: 'hello!',
prop2: null
}
const prop1 = foo.prop1 || {}
const prop2 = foo.prop2 || {}
console.log(prop1) // hello!
console.log(prop2) // {}
这就是我想要的,也是我认为等同于上面的 ES6 糖语法(虽然它不起作用..)
let foo = {
prop1: 'hello!',
prop2: null
}
const { prop1 = {} } = foo
const { prop2 = {} } = foo
console.log(prop1) // hello!
console.log(prop2) // null
但不知何故,有时它似乎在 React 中工作,但其他时候却没有..这是兼容性问题吗?太混乱了!
您可能对 null 和 undefined 之间的区别感到困惑,例如:
const { dogName = 'snickers' } = { dogName: undefined }
console.log(dogName) // what will it be? 'snickers'!
const { dogName = 'snickers' } = { dogName: null }
console.log(dogName) // what will it be? null!
const { dogName = 'snickers' } = { dogName: false }
console.log(dogName) // what will it be? false!
const { dogName = 'snickers' } = { dogName: 0 }
console.log(dogName) // what will it be? 0!
不是,不是兼容性问题
如果没有值,默认值将起作用,这意味着如果它是 undefined
,它将起作用。在您的示例中,您将 null
分配给 prop2
,并且 null
是定义的值。
因此,如果您的 prop2
未定义或未分配给 undefined
let foo = {
prop1: 'hello!',
prop2: undefined
}
const { prop1 = {} } = foo
const { prop2 = {} } = foo
console.log(prop1) // hello!
console.log(prop2) // {}