首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解构赋值默认值

解构赋值默认值
EN

Stack Overflow用户
提问于 2018-03-12 19:16:52
回答 2查看 15.9K关注 0票数 23

我正在学习javascript,当我试图在解构时给变量一个默认值的时候,我有点被ES6语法卡住了。基本上,我试图给一个变量赋值,给它一个对象属性的值,如果这个值是false/null/undefined,我希望它是一个空对象。例如,

代码语言:javascript
复制
let foo = { 
            prop1: 'hello!',
            prop2: null 
           }

const prop1 = foo.prop1 || {}
const prop2 = foo.prop2 || {}

console.log(prop1) //  hello!
console.log(prop2) //  {}

这就是我想要的,并且是我认为与上面等价的ES6糖语法(尽管它不起作用..)

代码语言:javascript
复制
let foo = { 
            prop1: 'hello!',
            prop2: null 
           }

const { prop1 = {} } = foo
const { prop2 = {} } = foo

console.log(prop1) // hello!
console.log(prop2) // null

但不知何故,有时它似乎在React中起作用,但另一些时候却不起作用。是不是兼容性问题?太让人困惑了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-12 19:20:46

您可能被null和undefined之间的区别弄糊涂了,例如:

代码语言:javascript
复制
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!

摘自:http://wesbos.com/destructuring-default-values/

票数 50
EN

Stack Overflow用户

发布于 2018-03-12 19:28:25

不,这不是兼容性问题。

默认值将在没有值的情况下工作,这意味着它将工作,如果它是undefined。在您的示例中,您将null赋值给prop2,而null是一个定义的值。

因此,如果您的prop2未使用undefined进行定义或分配,则它将正常工作

代码语言:javascript
复制
let foo = { 
        prop1: 'hello!',
        prop2: undefined 
       }

const { prop1 = {} } = foo
const { prop2 = {} } = foo

console.log(prop1) // hello!
console.log(prop2) // {}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49233891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档