diff --git a/hutool-core/src/main/java/cn/hutool/core/util/BooleanUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/BooleanUtil.java index 43119ee2e..79f5a74ca 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/BooleanUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/BooleanUtil.java @@ -533,13 +533,19 @@ public class BooleanUtil { * 定义{@see https://developer.mozilla.org/zh-CN/docs/Glossary/Falsy} */ public static boolean isJsFalsy(Object value) { - return FALSY_SET.contains(value); + if (FALSY_SET.contains(value)) { + return true; + } + if (value instanceof Double) { + return Double.isNaN((Double) value); + } + return false; } /** * 是否为真值(定义来源js) * 所有除 false、0、-0、0n、""、null、undefined 和 NaN 以外的皆为真值 - * 由于java中无法使用值来代表undefined 和 NaN,因此此处不做判断 + * 由于java中无法使用值来代表undefined,因此此处不做判断 * * @param value 参数 * @return 是否为真值 diff --git a/hutool-core/src/test/java/cn/hutool/core/util/BooleanUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/BooleanUtilTest.java index 7c4721720..75120c36f 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/BooleanUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/BooleanUtilTest.java @@ -110,6 +110,7 @@ public class BooleanUtilTest { Assert.assertTrue(BooleanUtil.isJsFalsy(-0.00F)); Assert.assertTrue(BooleanUtil.isJsFalsy("")); Assert.assertTrue(BooleanUtil.isJsFalsy(null)); + Assert.assertTrue(BooleanUtil.isJsFalsy(Math.sqrt(-1))); } @Test