Javascript 未定义的JS If条件
我有这样一个用户数据库:Javascript 未定义的JS If条件,javascript,Javascript,我有这样一个用户数据库: const user = { subscription: { plan: 'free_trial', }, }; 在用户更改计划之前,我需要检查一些条件 const currentDate = new Date(); if (user.subscription.trialExpDate > currentDate) { // do something } else { // trialExpDate is either undefined
const user = {
subscription: {
plan: 'free_trial',
},
};
在用户更改计划之前,我需要检查一些条件
const currentDate = new Date();
if (user.subscription.trialExpDate > currentDate) {
// do something
} else {
// trialExpDate is either undefined or <= currentDate
user.subscription.trialExpDate = currentDate;
}
const currentDate=新日期();
如果(user.subscription.trialExpDate>currentDate){
//做点什么
}否则{
//trialExpDate未定义或我建议使用hasownproperty
进行检查。
样本:
if(user.subscription.hasOwnProperty('trialExpDate')&&user.subscription.trialExpDate>currentDate){
//做点什么
}否则{
//trialExpDate未定义或我建议使用hasownproperty
进行检查。
样本:
if(user.subscription.hasOwnProperty('trialExpDate')&&user.subscription.trialExpDate>currentDate){
//做点什么
}否则{
//trialExpDate未定义或您只需检查它是否为null
if (user.subscription.trialExpDate != null || user.subscription.trialExpDate > currentDate) {
// do something
}
else {
// do something else
}
变量!=null
将同时检查变量是否为null或未定义。您只需检查它是否为null
if (user.subscription.trialExpDate != null || user.subscription.trialExpDate > currentDate) {
// do something
}
else {
// do something else
}
变量!=null
将同时检查变量是否为null或未定义。简而言之:如果您确定user.subscription.trialExpDate
不能为null
,使用原始代码是非常好的
看
如果user.subscription
始终存在且始终是一个对象,则将日期
对象与未定义
或NaN
之间的比较评估为假
。但是,对于空
,评估为+0
,因此空
(新日期)
将为true
,null>(新日期)
将为false
当JavaScript关系式比较起作用时
Date
对象被转换为其时间戳,即(日期对象)。valueOf()
原语被转换为数字
,这意味着:
- 未定义的
转换为NaN
null
转换为+0
然后,按照您对操作员的期望,在每个项目之间执行比较。请注意,任何涉及NaN
的比较计算结果都为false
简而言之:如果您确定user.subscription.trialExpDate
不能为null
,使用您的原始代码是非常好的
看
如果user.subscription
始终存在且始终是一个对象,则将日期
对象与未定义
或NaN
之间的比较评估为假
。但是,对于空
,评估为+0
,因此空
(新日期)
将为true
,null>(新日期)
将为false
当JavaScript关系式比较起作用时
Date
对象被转换为其时间戳,即(日期对象)。valueOf()
原语被转换为数字
,这意味着:
- 未定义的
转换为NaN
null
转换为+0
然后,按照您对操作员的期望,在每个项目之间执行比较。请注意,任何涉及NaN
的比较计算结果都为false
什么是user.subscription.trialExpDate
?它是字符串吗?请尝试newdate(user.subscription.trialExpDate)
user.subscription.trialExpDate
是未定义的
日期或对象未定义的>新日期();
将始终为false
。我会在比较之前测试该值。是的,这是我的问题。因此,在执行其余代码之前,您会先测试它是否未定义?即使它返回相同的答案和较短的代码?我当然会测试它。这将使我的代码更具可读性。user.subscriptio是什么n、 trialExpDate
?它是一个字符串吗?请尝试新日期(user.subscription.trialExpDate)
user.subscription.trialExpDate
是未定义的
或日期
对象未定义的>新日期();
将始终为false
。我会在比较之前测试该值。是的,这是我的问题。因此,在执行其余代码之前,您会先测试它是否未定义?即使它返回相同的答案和较短的代码?我当然会测试它。这将使我的代码更具可读性。谢谢,我会这样做:)trialExpDate
不是user
对象的ownProperty
,它属于user.subscription
假设如何user.subscription.trialExpDate
为null
?它将返回hasOwnProperty
true
。我将使用if(user.subscription.trialExpDate&.)
是的,@Rayon这是一种情况。如果我们确信不会为空,我们可以使用hasownproperty,否则我们必须按照您说的检查,谢谢,我会这样做:)TrialUpdate
不是user
对象的ownProperty
,它属于user.subscription
如果user.subscription.trialEx>呢pDate
为null
?它将返回hasOwnProperty
true
。我将使用if(user.subscription.trialExpDate&…)
是的,@Rayon这是一种情况。如果我们确信不会为空,我们可以使用hasownproperty,否则我们必须按照您所说的检查您可以在这里阅读更多内容:如果user.subscription.trialExpDate
是0
,我会有一个函数来测试它是否是有效的日期
。然后他也可以检查我是否t确实是0
。您可以在这里阅读更多内容:如果user.su怎么办