当前位置: 首页 > 面试题库 >

ES6 / 2015中的空安全属性访问(和条件赋值)

吴凯
2023-03-14
问题内容

是否有一个null-safe属性访问(空传播/存在)操作者在ES6(ES2015 / JavaScript.next /和谐)等 ?.
的CoffeeScript 例如?还是计划针对ES7?

var aThing = getSomething()
...
aThing = possiblyNull?.thing

大致如下所示:

if (possiblyNull != null) aThing = possiblyNull.thing

理想情况下,解决方案不应该分配(甚至undefined)到aThing如果possiblyNullISnull


问题答案:

更新 (2020-01-31):似乎人们仍在寻找这个,这是当前故事:

  • 可选的链接规范(第4阶段):https : //github.com/tc39/proposal-optional-chaining
  • babel-preset-env: 这可能是您想要的 https://babeljs.io/docs/en/babel-preset-env
  • Babel v7插件:https : //babeljs.io/docs/en/babel-plugin-proposal-optional-chaining

更新 (2017-08-01):如果要使用官方插件,则可以尝试使用新转换的Babel 7的Alpha版本。 你的旅费可能会改变

https://www.npmjs.com/package/babel-plugin-transform-optional-
chaining

原件

目前处于阶段1:可选链接的功能。

https://github.com/tc39/proposal-optional-
chaining

如果您今天想使用它,可以使用Babel插件来完成。

https://github.com/davidyaha/ecmascript-optionals-
proposal



 类似资料:
  • 如何避免对类的可选属性使用 我应该创建一个局部变量吗?我认为使用不是一个好的做法

  • 是一个代表SQL语句中的条件语句的接口。这是一个接口,这样其他类型的条件可以使用,并且允许最大的灵活性,以满足您的需求。 例如,写在原始的SQLite: 建议我们的查询从Model的属性中创造条件。 @Table(database = TestDatabase.class) public class TestModel3 { @PrimaryKey String name;

  • 假设我们有一个简单的Spring条件,它必须与属性文件中的文件属性相匹配: 不幸的是,上面提到的方法调用都没有返回在属性文件中定义的真实属性。相反,当我为另外两个调用getProperty方法和“${my.property}”字符串时,我得到了null(显然,该属性尚未解析)。

  • 我有一个values.yaml,我将一个值存储在一个属性中,还有一个deployment.yaml,我尝试将该值赋给一个环境变量。问题是属性名包含破折号,并抛出以下错误消息。 “空值”是因为我试图将名称引用为 {{ Values.security.enablemockservice | 引号 }},而不使用缓行绑定的破折号,但实际的属性名称是 Values.security.enable-mock

  • 问题内容: 因此,我可以使用进行访问,但如何访问? 问题答案: 您可以这样操作:

  • 在Flatter引入空安全特性之前,我能够有条件地在列表中添加小部件,如下所示: 是一个自制的过滤器,可以过滤掉空对象... 现在使用空安全性是不可能的,因为小部件列表严格来说必须是非空的。什么是更好的方法?