有人可以告诉我这里打字错误吗?
//差を求める日時の変数を作成
$dateTime1 = '2010-04-01';
$dateTime2 = '2019-06-30';
//DateTimeクラスで2つの日時のオブジェクトを作成
$objDatetime1 = new DateTime($dateTime1);
$objDatetime2 = new DateTime($dateTime2);
//diff()メソッドで2つの日時のオブジェクトから
//ふたつの日付の差をあらわす DateInterval オブジェクトを生成する
$objInterval = $objDatetime1->diff($objDatetime2);
//$objInterval(DateInterval オブジェクト)をformat()メソッドで日時を出力
//%Rは + や - の符号を出力するオプションです
echo $objInterval->format('%R%Y').'year<br/>'; //年
echo $objInterval->format('%R%M').'month<br/>'; //月
echo $objInterval->format('%R%D').'day<br/>'; //日
?>
isNaN(a) 和> isNaN(b)引发以下错误。
public sortList<T>(data: T[], key: string, action: boolean): Observable<T[]> {
const outputData: T[] = data.sort((a, b) => {
if (isNaN(a) && isNaN(b)) {
return a[key].toUpperCase() > b[key].toUpperCase() ? 1 : a[key].toUpperCase() < b[key].toUpperCase() ? -1 : 0;
}
});
return of(outputData)
.pipe(
share()
);
}
}
答案 0 :(得分:1)
不鼓励使用isNaN
的杂乱版本,尽管我可以看到您正在使用它来检查类型和NaN
。尽管这有点麻烦,但最好多花些功夫,并使用类型检查来检查类型,并使用NaN
检查来检查NaN
。
控制台日志的第一块(1-3)向您显示您从isNaN
开始使用的行为。我将在下一部分(4-6)中使用类型检查的(倒置)等效项。
最后一位(7-8)显示类型和NaN检查的用法。在此阶段,您不依赖于isNaN
的粗略行为,可以使用全局版本(现在确定使用的是数字)或Number.isNaN
版本,该版本更严格
带括号的版本没有编译器警告。
const num = 1;
const str = 'string';
const obj = { key: 'value' };
// Technically works, but compiler warnings
console.log('1.', isNaN(num)); // false
console.log('2.', isNaN(str)); // true
console.log('3.', isNaN(obj)); // true
// A bit more type-ish (note the results are inverted as I'm showing the "positive" test
console.log('4.', typeof num === 'number'); // true
console.log('5.', typeof str === 'number'); // false
console.log('6.', typeof obj === 'number'); // false
const a = 1;
if (typeof a === 'number') {
console.log('7a.', isNaN(a)); // false
console.log('7b.', Number.isNaN(a)); // false
}
const b = NaN;
if (typeof b === 'number') {
console.log('8a.', isNaN(b)); // true
console.log('8b.', Number.isNaN(b)); // true
}
这是从数字中筛选出字符串的版本:
function stringNumberCheck(strNum: string | number) : boolean {
const numeric = +strNum;
return (typeof numeric === 'number' && !Number.isNaN(numeric));
}
console.log('1:', stringNumberCheck(1)); // true
console.log("'100':", stringNumberCheck('100')); // true
console.log("'Hello':", stringNumberCheck('Hello')); // false
演示
"use strict";
function stringNumberCheck(strNum) {
const numeric = +strNum;
return (typeof numeric === 'number' && !Number.isNaN(numeric));
}
console.log('1:', stringNumberCheck(1)); // true
console.log("'100':", stringNumberCheck('100')); // true
console.log("'Hello':", stringNumberCheck('Hello')); // false