変数が文字列かどうか(そして同様に番号、ブール値など)を調べる最も良い方法は何ですか?変数の型を確認する
通常あなたが見つける:
function isString(value) {
return typeof value === 'string';
}
をしかし、人々は、1にも
var foo = new String("bar");
を使用して直接文字列オブジェクトを作成することができることを忘れて - それは良いアイデアであるか全く別の問題であるかどうか。
ここに行く方法は何ですか?私が考えることができます - と見てきました - 様々なアプローチ(やや簡略化):
// option 1
function isString(value) {
return (typeof value === 'string') ||
/^function String\(\)/.test(value.constructor + '');
}
または
// option 2
function isString(value) {
return (typeof value === 'string') ||
(value.constructor === String);
}
または
// option 3
function isString(value) {
return (typeof value === 'string') ||
value instanceof String;
}
これについて移動するための "最良の" 方法はあります?または、それらはすべて同等ですか?
ニート、私はそれを知らなかった(少なくとも私はそれを考えなかった;)本当に質問に答えない。 – n3rd
@ n3rd:既存の3つのオプションの1つではないが、それ以外の質問にはどのように答えられないのですか? – BoltClock
+1。ちょうどこれを掲載しようとしていた。これはStringのサブクラスをキャッチしますか? – Skurmedel