web-dev-qa-db-ja.com

「typeof」に括弧が不要なのはなぜですか?

typeof (myVariable)typeof myVariableの間に違いはありますか?

どちらも機能しますが、PHPを使用しているため、この関数で括弧を使用できるかどうかがわかりません。

53
Don P

typeofキーワードは、Javascriptプログラミングの演算子を表します。

specificationtypeof演算子の正しい定義は次のとおりです。

_typeof[(]expression[)] ;
_

これが、typeoftypeof(expression)または_typeof expression_として使用する理由です。

whyがそのように実装されているのは、おそらく開発者がコードの可視性のレベルを処理できるようにするためです。そのため、typeof:を使用してクリーンな条件ステートメントを使用することができます。

_if ( typeof myVar === 'undefined' )
  // ...
;
_

または、 グループ化演算子 を使用してより複雑な式を定義します。

_const isTrue = (typeof (myVar = anotherVar) !== 'undefined') && (myVar === true);
_

編集:

場合によっては、typeof演算子で括弧を使用すると、記述されたコードがあいまいになりにくくなります。

たとえば、typeof演算子が括弧なしで使用されている次の式を考えてみます。 typeofは、空の文字列リテラルと数値の間の連結の結果のタイプ、または文字列リテラルのタイプを返しますか?

_typeof "" + 42
_

上記の演算子の定義と 演算子typeofと_+_ の優先順位を見ると、前の式は次の式と同等であるように見えます。

_typeof("") + 42 // Returns the string `string42`
_

この場合、typeofで括弧を使用すると、表現しようとしている内容がより明確になります。

_typeof("" + 42) // Returns the string `string`
_
64
Halim Qarroum