2013-04-05 21 views
29

typeof (myVariable)typeof myVariableとの間に違いはありますか?なぜ "typeof"にかっこは必要ないのですか?

どちらも機能しますが、PHPから来ていますが、なぜこの関数がかっこを使用できるかどうかわかりません。

+1

これは機能ではありません。 –

+1

追加するには、 '+'または '-'と似た演算子ですhttps://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof –

+0

' typeof'は演算子であるため、機能。 – jmoerdyk

答えて

44

typeofキーワードはオペレータを表し、Javascriptのプログラミングを表します。

specificationtypeofオペレータの正しい定義は次のとおり

typeof[(]expression[)] ; 

これはtypeof(expression)又はtypeof expressionとしてtypeofの使用の背後にある理由です。

なぜになっているのかは、おそらく開発者にコード内の可視性のレベルを処理させるためです。このように、typeofを使用してクリーンな条件文を使用することが可能である:

if (typeof myVar === 'undefined') 
    // ... 
; 

あるいは読みやすさのために()を使用して、より複雑な式を記述:

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

はEDIT:

場合によっては、typeof演算子でかっこを使用すると、記述されたコードのあいまいさが軽減されます。

たとえば、typeof演算子がカッコなしで使用されている次の式を取ります。 typeofは、空の文字列リテラルと数値の間の連結結果の型、または文字列リテラルの型を返しますか?

typeof "" + 42 

上記で述べたオペレータとprecedence of the operators typeof and +の定義を見てみると、前の式と等価であることが表示されます:typeofで括弧を使用することに多くの明快さをもたらすだろう、この場合、

typeof("") + 42 // Returns the string `string42` 

あなたが表現しようとしているもの:

typeof("" + 42) // Returns the string `string` 
関連する問題