4

それで、今日私はこのシナリオに遭遇しました。比較する必要のある整数と文字列がありました。2つを比較するには、整数をtoString()するか、文字列をintに解析する必要があります。

これが私の質問です。どちらを選ぶべきですか、2つのパフォーマンスに違いはありますか?(最小限であっても)経験則はありますか?

コード例は次のとおりです。

var intI = 1;
var stringS = '1';

if (intI.toString() == stringS)
console.log('are equal');

//Or
if (intI == parseInt(stringS))
console.log('are equal');

整数を私が知っている文字列として宣言できれば最高です(計算には使用されないため)。しかし、それはサイトの至る所で使用されています。

4

5 に答える 5

12

パフォーマンスよりも必要なセマンティクスによって異なります。文字列「001」は数値と同じである必要があります1か?答えが「はい」の場合は、値を数値に変換する必要があります。そうでない場合は、文字列として比較する必要があります。

何百万ものそのような操作を実行するアプリケーションがない限り、そのような些細なことのパフォーマンスについて心配する必要はありません。

またparseInt()、数字の文字列の最後にゴミが残っているかどうかは関係ありません。あれは

parseInt("123skidoo", 10) === 123

ですtrue

于 2012-12-18T13:27:45.763 に答える
1

2つのパフォーマンスに違いはありますか?

目立たない。ただし、またはなどの文字列を数値にparseInt変換する場合と同様に、2つの方法には動作の違いがあります。あなたはそれが欲しいですか?そうでない場合は、整数をtoStringする必要があります。0011xyz1

==ところで、演算子を使用するだけの場合、文字列は暗黙的にToNumber編集されます。これにより、(as)の一部の数字のみで始まる文字列は許可されませんが、たとえばまたは。1xyzと同等の数値表現は許可されません。11.0001

于 2012-12-18T13:30:12.637 に答える
0

実際、この場合は何も変換する必要はありません。整数を文字列と比較すると、Javascriptエンジンは自動的に一方を他方に変換します。javascript:alert(1 == '1');Webブラウザのナビゲーションバーに入力して試すことができます。「true」を返します。

于 2012-12-18T13:29:53.123 に答える
0

デフォルトではjavascriptが自動的に処理するため、明示的な変換を行う必要はありません。また、比較するセマンティクスによっても異なります。このような些細なケースでのパフォーマンスについて心配する必要はないと思います。

于 2012-12-18T13:30:28.067 に答える
0

これを試して

var intI = 1;
var stringS = '1';

intIを文字列に変換するには、以下を使用してください。

var intI = 1+"";//now check the type of intI, it would be string
于 2012-12-27T15:29:07.333 に答える