吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 997|回复: 7
收起左侧

[讨论] 关于JS声明的优化写法

[复制链接]
cqwcns 发表于 2021-9-12 08:31
最近越来越注重语法,但有两个疑问请各位大佬指教一下。


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


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


谢谢各位大佬。


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

冰镇苏打水 发表于 2021-9-12 09:25
第一个是解构赋值, 如果 event 不存在 岂不是要解构 null ,直接就报错了.... event||{}; 假如存在 肯定要申明出来,不然后续维护起来,都不知道变量从哪里来的,你这个申明我觉得没毛病...

第二个是赋值 我一般习惯
[JavaScript] 纯文本查看 复制代码
Object.assign(obj,{age:1})
webshi 发表于 2021-9-12 09:27
第一个,我觉得没必要把 event 对象中的属性全部解构出来,等用到的时候再通过 event.doc 这样的形式获取即可

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

[JavaScript] 纯文本查看 复制代码
const updater = 'xxx';
const updaterPhoneNumber = 'xxx';
const thing = 'xxx';

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

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
cqwcns + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| 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一定存在的,只是它里面的值不一定存在而已。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表