優れたコメントを回答に要約します。theSystem、RocketHazmat、pst、bfavaretto、Pointy に感謝します。
どちらがより速く実行されますか? だと思います…</p>
テスト、テスト、テストしかできません。jsPerfはそれを行うための良い選択です。テストでは、空の文字列と連結されたプリミティブ値が最も高速な方法であることが示されています。関数呼び出しはコストがかかります。これは、変数がキャッシュされずに毎回インスタンス化される場合に特に当てはまります ( Geuis によるテスト)。
プリミティブがオブジェクトに変換されて式に応答し、再びプリミティブに戻るため、オブジェクト型の変換が高速になります。
これは、EcmaScript 仕様が動作について説明していること (セクション 8.7.1、セクション 9.8 ) にすぎず、現在のエンジンが行うことではありません。オブジェクトのオーバーヘッドは発生しませんが、内部のプリミティブ値のみを使用します。仕様のステップ数を信用しないでください!
ただし、関数を呼び出すのではなく (セクション 15.7.4.2 ) - ネイティブであっても - 演算子を介して直接取得する(セクション 11.6.1 ステップ 7 ) 方が高速です。Number.prototype.toString
ToString
addition
一般に、時期尚早に最適化しようとしないでください。ただし、実際にパフォーマンスの問題が発生した場合にのみ行ってください (このコードではほとんど問題になりません)。したがって、簡単にするためにプリミティブ値を使用し、読みやすいものに応じて、またはどちら.toString()
かを使用します。+""