Yes, like that, but that will require to modify the object. Compare this
```js let a = {} a.field ?= couldBeNull ``` To: ```js let a = { field ?: couldBeNull } ``` Also if you want to set the property with the same name of the variable ```js let field = ... let a = { field? } ``` Why this is useful? Well, is not the biggest change but it could make the language more expressive. Also this is similar to how Typescript declares optional properties in object interfaces. ```ts interface User{ id: string, username: string, age?: number, } ``` then: ```js function createUser({id, username, age}){ db.user.insertOne({id, username, age?}) } On nov. 28 2017, at 8:45 pm, Sebastian Malton <sebast...@malton.name> wrote: So something like the following? ```js a.field ?= value; ``` And this sets the property `field` of object `a` to `value` if `value != null`. Sebastian Malton From: rodrigocarra...@outlook.com Sent: November 28, 2017 8:40 PM To: sebast...@malton.name Cc: es-discuss@mozilla.org Subject: Re: A way to prevent properties to be added to an object if they are null or undefined. It's about the value of the property to be added, nothing to do with the name of the property. It should discard properties whose value are null(but this behavior is not always desired, so a different syntax for these properties should be added). ``` On nov. 28 2017, at 8:33 pm, Sebastian Malton <sebast...@malton.name<mailto:sebast...@malton.name>> wrote: I am sort of confused about what you are asking, is the check about the property name or the current value of the property? Sebastian Malton From: rodrigocarra...@outlook.com<mailto:rodrigocarra...@outlook.com> Sent: November 28, 2017 8:30 PM To: es-discuss@mozilla.org<mailto:es-discuss@mozilla.org> Subject: A way to prevent properties to be added to an object if they are null or undefined. A way to prevent properties to be added to an object if they are null or undefined. Currently this can be accomplished in many ways: With an if: ```js function foo(couldBeNull){ let ret = {} if(couldBeNull){ ret.couldBeNull<http://ret.couldbenull/?recipient=sebastian%40malton.name> = couldBeNull } return ret } ``` With ternary (kind of gross) ```js function foo(couldBeNull){ let ret = {} couldBeNull ? (ret.couldBeNull<http://ret.couldbenull/?recipient=sebastian%40malton.name> = couldBeNull) : null return ret } ``` Also gross ```js function foo(couldBeNull){ let ret = {} couldBeNull && (ret.couldBeNull<http://ret.couldbenull/?recipient=sebastian%40malton.name> = couldBeNull) return ret } ``` A bit hard to read: ```js function foo(couldBeNull){ let ret = { ...({couldBeNull} : {}) } return ret } ``` Requires importing a lib or writing the function by yourself. Also it has to iterate over all values ```js function foo(couldBeNull){ let ret = { couldBeNull } ret = removeEmptyValues(ret) // imported from some library return ret } ``` Wouldn't it be better something like this?: ```js function foo(couldBeNull){ let ret = { couldBeNull? } return ret } ``` Or if you want to set other property name ```js function foo(couldBeNull){ let ret = { bar ?: couldBeNull // bar is not added if couldBeNull is null or undefined } return ret } ``` [https://ipmcdn.avast.com/images/icons/icon-envelope-tick-round-orange-animated-no-repeat-v1.gif]<https://www.avast.com/sig-email?utm_medium=email&%3Butm_source=link&%3Butm_campaign=sig-email&%3Butm_content=emailclient&recipient=sebastian%40malton.name> Libre de virus. www.avast.com<https://www.avast.com/sig-email?utm_medium=email&%3Butm_source=link&%3Butm_campaign=sig-email&%3Butm_content=emailclient&recipient=sebastian%40malton.name> _______________________________________________ es-discuss mailing list es-discuss@mozilla.org<mailto:es-discuss@mozilla.org> https://mail.mozilla.org/listinfo/es-discuss<https://mail.mozilla.org/listinfo/es-discuss?recipient=sebastian%40malton.name>
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss