cqwcns 发表于 2021-9-12 08:31

关于JS声明的优化写法

最近越来越注重语法,但有两个疑问请各位大佬指教一下。


一、以下代码为例,event是一个传参,传过来后我会里面的属性全部声明出来,以便后续引用,我是这样做的,要把所有属性的列举一遍,其实有没有更优的写法?
let {
    collection,
    doc,
    where,
    updater,
    updaterPhoneNumber,
    fields,
    values,
    things,
    whatIsUp,
    changeLog
} = event || null


二、以下代码为例,有一个对象changeLog,首先它并非一定存在,然后我还有在它的基础上再新加多个属性,我是这样写的,其实有没有更优的写法?
let thisLog = changeLog || {}
    thisLog.updater = updater
    thisLog.updaterPhoneNumber = updaterPhoneNumber
    thisLog.thing = thing
    thisLog.when = db.serverDate()

谢谢各位大佬。


冰镇苏打水 发表于 2021-9-12 09:25

第一个是解构赋值, 如果 event 不存在 岂不是要解构 null ,直接就报错了.... event||{}; 假如存在 肯定要申明出来,不然后续维护起来,都不知道变量从哪里来的,你这个申明我觉得没毛病...

第二个是赋值 我一般习惯 Object.assign(obj,{age:1})

webshi 发表于 2021-9-12 09:27

第一个,我觉得没必要把 event 对象中的属性全部解构出来,等用到的时候再通过 event.doc 这样的形式获取即可

第二个,我觉得如果不为 changeLog 添加 updater 这些属性的话,可以这样写

const updater = 'xxx';
const updaterPhoneNumber = 'xxx';
const thing = 'xxx';

const thisLog = {
...(changeLog || {}),
updater,
updaterPhoneNumber,
thing,
when: db.serverDate(),
}

cqwcns 发表于 2021-9-12 09:53

冰镇苏打水 发表于 2021-9-12 09:25
第一个是解构赋值, 如果 event 不存在 岂不是要解构 null ,直接就报错了.... event||{}; 假如存在 肯定要申 ...

event || null不会报错,实际的结果是如果event存在这个值,则声明出来。如果存在对应值,则没有被声明。

例如:
let {
collection,
doc
} = event || null

如果collection存在,则生成了一个collection的变量。
如果doc不存在,则不会生成一个doc变量。

cqwcns 发表于 2021-9-12 10:01

webshi 发表于 2021-9-12 09:27
第一个,我觉得没必要把 event 对象中的属性全部解构出来,等用到的时候再通过 event.doc 这样的形式获取即 ...

你好,第二个这样写确实可以,...(changeLog || {})这个写法是什么名堂,叫什么?谢谢

cqwcns 发表于 2021-9-12 10:05

cqwcns 发表于 2021-9-12 10:01
你好,第二个这样写确实可以,...(changeLog || {})这个写法是什么名堂,叫什么?谢谢

知道了,扩展运算符。

冰镇苏打水 发表于 2021-9-12 19:22

cqwcns 发表于 2021-9-12 09:53
event || null不会报错,实际的结果是如果event存在这个值,则声明出来。如果存在对应值,则没有被声明。 ...

那假如 event 是个 undefined 或者null呢?

不支持解构吧?

cqwcns 发表于 2021-9-12 20:18

冰镇苏打水 发表于 2021-9-12 19:22
那假如 event 是个 undefined 或者null呢?

不支持解构吧?

我的环境是event一定存在的,只是它里面的值不一定存在而已。
页: [1]
查看完整版本: 关于JS声明的优化写法