【问题标题】:More concise way to set object property where object might be null or undefined更简洁的方法来设置对象可能为空或未定义的对象属性
【发布时间】:2021-09-02 15:49:11
【问题描述】:

我有一个 JavaScript errors 对象,我在一个称为数据表的开箱即用表组件上的 Salesforce Lightning Web 组件中使用该对象。我不会详细介绍它的使用方式,但就我的问题而言,errors 可以为空,或者它可以有一个rows 属性(它本身是一个对象,用于行级错误),它也可以有一个table 属性(也是一个对象,用于表级错误)。

以下是errors 的一些可能值:

errors = null;

errors = {
    rows: {
        ...
    }
}

errors = {
    table: {
        ...
    }
}

errors = {
    rows: {
        ...
    },
    table: {
        ...
    }
}

在设置表级错误时,我不想只说errors = { table: {...}},因为那样我可能会覆盖一些行级错误。所以这就是我目前的编码方式:

if (errors === null) {
    errors = { table: {} };
} else {
    errors.table = {};
}
errors.table.title = 'You must select at least one item to be returned.';

有更简洁的方法吗?

【问题讨论】:

    标签: javascript coding-style javascript-objects


    【解决方案1】:

    您不需要else

    errors = errors || {};
    errors.table = {};
    

    在现代 JavaScript 环境中,最好使用??

    errors = errors ?? {}; // or errors ??= {}
    errors.table = {};
    

    在您的情况下没有太大区别,但|| 对值执行老式“真实”测试,而?? 只检查nullundefined

    说到这一点,在 大多数 情况下,与null 相比,我更喜欢使用== 而不是===,因为== 同时考虑了nullundefined一样的东西。在大多数编码情况下,明确区分两者有点脆弱。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多