javascriptの単項プラス(+)について調べたメモ

Posted by roadman on Thursday, January 24, 2019

TOC

説明

  • javascsriptで文字列(string)から数値(number)への変換を行う時、parseInt()を使うが、javascriptの使用には以下のような記法も存在する。

    const num1 = parseInt('5')
    const num2 = +'5'
    
  • ブラウザのコンソールなどで試して見るとわかるがこれは同じ結果になる。とはいえ、これは別にparseIntの省略形とかそういうわけではなく、仕様上はECMAscriptのUnary + Operator(単項プラス演算子)である。

  • ECMAScript Language Specification - ECMA-262 Edition 5.1

    11.4.6 Unary + Operator
    
    The unary + operator converts its operand to Number type.
    
    The production UnaryExpression : + UnaryExpression is evaluated as follows:
    
    1. Let expr be the result of evaluating UnaryExpression.
    2. Return ToNumber(GetValue(expr)).
    
  • 実装上はparseInt()の代わりなどで使われることが多そうだが、明示的ではなくぱっと見『???』と思ってしまうので、可読性がいいともいえないだろう。parseInt()が使われる頻度を考えれば、単項プラスにしたところでコード全体で見れば対して効率がよくなっているとも思えない。

  • 高速であると言われている(が、自分で計測はしてないのでなんとも)。だが、高速とはいっても、numberへの変換だけを数百数千とやるようなコードをjavascriptで書くことがそうそうある気もしない(あるなら話は別なのだろうが。。)。