网页技术与语法

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 价值200美元的免费积分!

JavaScript 具有一个(全新的)称为 可选链 的特性。 假设我有以下代码

const name = Data.person.name;

如果 Data 上的 person 不存在,我将获得一个硬性的、无法停止的错误。 使用可选链,我可以编写

const name = Data.person?.name;

现在,如果 person 不存在,则 name 将变为 undefined,而不是抛出错误。 我认为这非常有用。 在某种程度上,它可以使代码更具弹性,因为脚本完全崩溃的可能性较小。 但是,有些人认为它实际上会导致代码弹性变差,因为您没有从根本上解决问题(错误数据),而是在问题上贴了个创可贴。

Jim Nielsen 将可选链与 CSS 中的 !important 相联系。 “未定义属性”错误可能是所有 JavaScript 错误中最常见的错误,可选链是一种快速的解决方法。 样式无法按您期望的方式级联可能是(也许?)所有 CSS 问题中最常见的错误,而 !important 是一种快速的解决方法。

任何熟悉 CSS 的人都知道,使用 !important 并不总是能解决您的问题。 事实上,它可能会导致更多问题。 JavaScript 中的可选链也是如此,它可能会导致更多问题,而不是解决问题(我们还不知道,因为它还没有存在足够长的时间)。

我喜欢这种观点。

关于新特性的全面负面热烈讨论只是点击诱饵的无稽之谈,但有时其中会埋藏一些值得思考的好东西。 我敢打赌,可选链将在 JavaScript 中形成一些不错的模式,就像 !important 在某种程度上 在 CSS 中已经做到的那样。 我最近听到的关于 CSS 中 !important 的大多数讨论都是关于当你真的需要使用它时你应该使用它(而不是为了摆脱困境)。

直接链接 →