Javascript 调用Date()构造函数时是否可以显式省略参数?

Javascript 调用Date()构造函数时是否可以显式省略参数?,javascript,Javascript,我试图从一个可以是datetime字符串或null值的值中创建一个日期。如果提供空值,则日期应默认为现在 这是可行的,但看起来并不优雅: const date = value ? new Date(value) : new Date() 使用这样的表达式更具可读性: // Naive example const date = new Date(value || undefined) 问题是新日期(未定义)与新日期()不同,它将返回无效日期。有办法解决这个问题吗?也许不知何故,没有明确地将参数

我试图从一个可以是datetime字符串或
null
值的值中创建一个日期。如果提供空值,则日期应默认为现在

这是可行的,但看起来并不优雅:

const date = value ? new Date(value) : new Date()
使用这样的表达式更具可读性:

// Naive example
const date = new Date(value || undefined)
问题是
新日期(未定义)
新日期()不同,它将返回
无效日期
。有办法解决这个问题吗?也许不知何故,没有明确地将参数传递给构造函数?

您可以这样做

new Date(value || Date.now())
这样做的好处是,每个人都能理解作为“默认”情况返回的日期

也许不知何故,没有明确地将参数传递给构造函数

您可以使用参数排列:

var args = value ? [value] : [];
new Date(...args)

但我认为这里发生了什么更不清楚。有一个单独的调用,比如在第一个示例中,或者传递
Date.now()
,可以非常清楚地说明代码的用途

您可以执行
新建日期(值| | Date.now())
。这样做的好处是,每个人都能理解作为“默认”情况返回的日期。“可能不知何故没有将参数传递给构造函数?”您可以使用参数spread:
var args=value?[价值]:[];新日期(…args)
,但我认为这里发生了什么更不清楚。有一个单独的调用,比如在第一个示例中,或者传递
Date.now()
可以非常清楚地说明代码的用途。那么
新日期((值| |未定义)?值:null)
@ImanEmadi:
新日期(null)
新日期(0)
相同,传递
未定义的
不起作用,不幸的是,我会明确地说出你在做什么(或者返回一个基于
的日期,或者返回当前日期),这样下一个阅读它的开发人员就不必太费劲了。也许三元非优雅代码是最好的。