首页
学习
活动
专区
圈层
工具
发布

如何优雅判断属性值为空

假设我们现在需要取出 a.b.c,但是并不清楚它们是否都存在,那么代码会写成这样: if (a && a.b) { const c = a.b.c } 其实这样的代码在项目中出现的频率是很高的,如果需要取的值层级过深的话...undefined : a.b.c 虽然编译后的代码看着有点啰嗦,但是确实很优雅的解决了判空的问题。...不过可选链在某些场景下还是存在坑的,比如如下代码: const a = { b: { c: false } } 假如说我们希望在取值 a.b.c 中给 c 设置一个默认值 true /...c || true 但是在这个场景下就会出现 Bug,预期值是 false,结果答案为 true。 解决这个问题也很简单,再引入一个新语法双问号即可。...这个语法的作用和 || 是类似的,但是只有当取值为 null 或者 undefined 时才会使用默认值。 // false const c = a?.b?.c ??

5.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Mybatis查询结果为空时,为什么返回值为NULL或空集合?

    目录 背景 JDBC 中的 ResultSet 简介 简单映射 回归最初的问题:查询结果为空时的返回值 结论 背景 一行数据记录如何映射成一个 Java 对象,这种映射机制是 MyBatis 作为 ORM...看完这篇你就知道查询结果为空时候为什么集合会是空集合而不是 NULL,而对象为什么会是 NULL 了。 PS:对过程不感兴趣的可以直接跳到最后看结论。...回归最初的问题:查询结果为空时的返回值 | 返回结果为单行数据 可以从 ResultSetHandler的handleResultSets 方法开始分析。...所以不管是集合类型还是普通对象,Mybatis 都会先初始化一个 List 存储结果,然后返回值为普通对象且查为空的时候,selectOne 会判断然后直接返回 NULL 值。...而返回值为集合对象且查为空时,selectList 会把这个存储结果的 List 对象直接返回,此时这个 List 就是个空集合。

    7.8K20

    Spring 团队谈 AOT 缓存处理、空值安全性和支持政策

    Java 中的空值安全性正日益受到广泛关注。JEP Draft 8303099(非空受限和可空类型 (预览))目前仍在推进中,尚未成为即将发布的 JDK 版本的候选特性。...Java 的默认行为适用于那些未明确声明其 API 空值语义的库。...当混合使用空值安全(null-safe)和空值不安全(null-unsafe)代码时效果很好,尤其是当空值安全的 API 使用空值不安全的库时。 其次,粒度可以比整个库更具体。...库可以用这种方式逐步增加空值安全性,甚至可以细化到类或方法级别 最后,JSpecify 正在努力更全面地定义 JDK 本身的空值语义,因为目前只有其 API 的一个子集指定了空值相关的信息。...InfoQ:Spring Boot 每个大版本的最后一个版本为长期支持(LTS)版本。

    28200

    如何在Spring中为`@Value`注解设置默认值

    如何在Spring中为@Value注解设置默认值 在Spring开发中,我们经常会遇到需要从配置文件中读取属性的情况。...它能够将外部配置(如application.properties或application.yml)中的属性值注入到Spring的Bean中。...四、不同数据类型的默认值设置 Spring支持多种数据类型的属性注入,对于每种类型,都可以设置默认值。...属性的层次结构 在Spring中,属性是可以继承的,这意味着你可以在较高级别的配置文件中定义默认值,然后在较低级别的配置文件中覆盖这些默认值。...七、总结 为@Value注解设置默认值是Spring开发中常见且实用的技巧。它不仅能够增强程序的健壮性,还能够为不同的环境提供灵活的配置管理。

    53510
    领券