2

http://diveintohtml5.info/everything.htmlのコードを理解しようとしていて、次のスニペットに固執していました

typeof function(){} // "function"
typeof !function(){}  // "boolean"

を追加した後にブール値になる理由を理解したいです!

前もって感謝します

4

4 に答える 4

6

のポイントは!、値をブール値trueまたはfalse(およびそれを反転) に変換することです。

論理否定演算子 ( ! )

プロダクション UnaryExpression : ! UnaryExpression は次のように評価されます。

  1. UnaryExpression を評価した結果を expr とします。
  2. oldValue を ToBoolean(GetValue(expr)) とします。
  3. oldValue が true の場合、false を返します
  4. 真を返します。

http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.9

于 2013-09-15T19:20:28.067 に答える
1

記号は、値をまたは!に変換します。truefalse

あなたの場合、値はfunction(){}. そのため、!が前に置かれると、それが に変わりますfalse

このMSDNを確認してください

于 2013-09-15T19:22:12.943 に答える
0

!演算子は常にブール値を返します。これはfunction(){}偽の* (false のような) 値ではないため、値が偽ではないため、ブール値の逆を返しているだけですfalse

これは、私が見つけた真偽値の概要です。

たとえば、JS コンソールでこれらを試すことができます。

console.log(5) //5
console.log(!5) //false, because 5 is not null

console.log("hello") //hello
console.log(!"hello") //false, because "hello" is not null

var fun = function() { console.log("Yay") }
console.log(fun) //Shows the function definition
console.log(!fun) //false, because the value of fun is not null
于 2013-09-15T19:32:01.263 に答える
-2

うーん...それは真実/偽りのゲームですか?

typeof typeof function(){} // "string"
if("") {alert('truthy')} else {alert('falsy');}  // falsy
typeof !"" // "boolean"

私はこれを正しく理解していますか?

于 2013-09-15T19:25:10.500 に答える