http://diveintohtml5.info/everything.htmlのコードを理解しようとしていて、次のスニペットに固執していました
typeof function(){} // "function"
typeof !function(){} // "boolean"
を追加した後にブール値になる理由を理解したいです!
前もって感謝します
http://diveintohtml5.info/everything.htmlのコードを理解しようとしていて、次のスニペットに固執していました
typeof function(){} // "function"
typeof !function(){} // "boolean"
を追加した後にブール値になる理由を理解したいです!
前もって感謝します
のポイントは!
、値をブール値true
またはfalse
(およびそれを反転) に変換することです。
論理否定演算子 ( ! )
プロダクション UnaryExpression : ! UnaryExpression は次のように評価されます。
- UnaryExpression を評価した結果を expr とします。
- oldValue を ToBoolean(GetValue(expr)) とします。
- oldValue が true の場合、false を返します
- 真を返します。
!
演算子は常にブール値を返します。これは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
うーん...それは真実/偽りのゲームですか?
typeof typeof function(){} // "string"
if("") {alert('truthy')} else {alert('falsy');} // falsy
typeof !"" // "boolean"
私はこれを正しく理解していますか?