2011-01-26 6 views

答えて

3

!は、ブール演算子ではありません。 !function()

functionname
2

関数の名前を「関数」と置き換えている場合は、単に関数の結果を否定することを意味します。 !はそうではありません。したがって

!true == false 
0

否定です。したがって、function()がブール値を返す場合、!はそれを否定します。

ないJSが、それはまた、単に関数の名前かもしれないので、($が合法である)の命名支配する方法を確認してください:P(私がいるのでチェックしました、そして!がオペレーターであるから、それは法的ではないと思われますですので、これはではなく可能です)。

+1

名前に使用できる英数字以外の文字は、「_」と「$」です。 – Reid

+0

@しかし、ああ、彼らは多く使用されます。 Javascriptは私の専門ではありません。 –

1

が呼び出す()で呼び出され(おそらく関数オブジェクトに評価される)の発現およびこの評価(関数オブジェクト)の結果であり、その反対の値ブーリアンにfunction()の戻り値を変換して返します関数を呼び出し、戻り値を評価します。

ここで、この戻り値(式の結果)はunary ! (not) operatorで否定されます。 !の規則は、!truthy -> false!falsy -> trueです。truthyfalsyは、"truthy and falsy" in JavaScriptの概念です。

例のように書くことができます:!((functioname)())、それはこれを試しちょうど愚かな

1

です:

var a = !function() { 
      alert("notfun"); 
      return "nottestfun"; 
     } 

alert(a); 

それは警告:

false 

と他には何を。 ()を実行しようとすると、タイプエラーが発生します。

Uncaught TypeError: Property 'a' of object [object DOMWindow] is not a function 
+0

それはそうではありません。 'function(){}'(式の文脈では、これは例の中にあります)はただちに否定される関数オブジェクトを返すことです! ( 'var a =!someFunctionObject')オブジェクトは' truthy'値なので 'var a = false'と同じで、' false() 'は単なる愚かです。関数を評価し、その関数に '!'を適用したい場合は、var a =!(function(){alert( "notfun"); return "nottestfun"}))();アラート(a) ' - ハッピーコーディング。 –

関連する問題