我正在運行下面的代碼,檢查字串是否為日期。我的輸入值之一是'text'回傳NaN值,但我的if子句沒有按預期作業。
function isDate(myDate) {
console.log('myDate = ' myDate);
return Date.parse(new Date(myDate));
}
// var date1 = '1/5/22'; // good date
var date1 = 'test'; // bad date
var whatDate = isDate(date1);
console.log('date = ' whatDate);
if (whatDate == 'NaN') {
console.log('bad date');
} else {
console.log('good date');
}
uj5u.com熱心網友回復:
在您的 if 陳述句中,您正在檢查 whatDate 是否等于字串“NaN”。您要檢查 whatDate 是否為數字。
你可以試試
if (isNaN(whatDate))
uj5u.com熱心網友回復:
你快到了:
if(whatDate == 'NaN'){
log.debug('bad date');
}else{
log.debug('good date');
}
而不是比較whatDate使用'NaN'函式isNaN():
if(isNaN(whatDate)){
log.debug('bad date');
}else{
log.debug('good date');
}
或者,如果您真的想與您進行比較,則'NaN'首先必須轉換whatDate為字串:
if((whatDate "") == 'NaN'){
log.debug('bad date');
}else{
log.debug('good date');
}
是一種可能。另一種方法是
if(whatDate.toString() == 'NaN'){
log.debug('bad date');
}else{
log.debug('good date');
}
uj5u.com熱心網友回復:
下面的答案,除了已經解釋過的關于如何檢測NaN值的內容之外,還想要更進一步。
一個檢查或測驗函式,特別是如果它的名稱中還帶有前綴is,則應該始終只回傳一個布爾值。
- 因此,OP 首先會以用戶期望它作業的方式實作這樣的功能。
- 其次,OP在測驗功能的實作中確實處理了
NaN一次該問題。
根據RobG的澄清進行編輯
... 和 ...根據 ECMAScript 的實體化Dateobject規范,傳遞給建構式的引數將被決議并分配給內部thisTimeValue插槽。后者的數字型別是NaN不可決議(無效)引數的值。
任何valueOf相關操作都會回傳內部thisTimeValue槽的值。
任何toString相關操作都將從后一個值計算日期字串格式。對于一個回傳thisTimeValue的NaN字串值必須是'Invalid Date'。
因此,驗證/測驗實作可能類似于...
function isParsableDateRepresentative(...args) {
return String(new Date(...args)) !== 'Invalid Date';
}
...但最好它應該更接近下一個提供的...
function isParsableDateRepresentative(...args) {
return !Number.isNaN(new Date(...args).valueOf());
}
測驗:
function isParsableDateRepresentative(...args) {
return !Number.isNaN(new Date(...args).valueOf());
}
console.log('new Date("1/5/22") ...', new Date("1/5/22"));
console.log(
'isParsableDateRepresentative("1/5/22") ...',
isParsableDateRepresentative("1/5/22")
);
console.log('\nnew Date("test") ...', new Date("test"));
console.log(
'isParsableDateRepresentative("test") ...',
isParsableDateRepresentative("test")
);
console.log('\nnew Date(new Date("test")) ...', new Date(new Date("test")));
console.log(
'isParsableDateRepresentative(new Date("test")) ...',
isParsableDateRepresentative(new Date("test"))
);
console.log('\nnew Date() ...', new Date());
console.log(
'isParsableDateRepresentative() ...',
isParsableDateRepresentative()
);
console.log('\nnew Date(null) ...', new Date(null));
console.log(
'isParsableDateRepresentative(null) ...',
isParsableDateRepresentative(null)
);
console.log('\nnew Date(undefined) ...', new Date(undefined));
console.log(
'isParsableDateRepresentative(undefined) ...',
isParsableDateRepresentative(undefined)
);
console.log('\nnew Date("") ...', new Date(""));
console.log(
'isParsableDateRepresentative("") ...',
isParsableDateRepresentative("")
);
.as-console-wrapper { min-height: 100%!important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/411269.html
標籤:
