質問: javascriptで(!~)は何を意味しますか?
回答: if文の括弧内について、言語によっては取る値がtrue/falseでなくてはなりませんが、JavaScriptではtrue/false以外のモノでも分岐ができます。true/false以外のモノが来ても、内部的に処理されてtrue/falseのいずれかに変換されるようになっています。 if(条件式) { //(処理A) } else { //(処理B) } このようなif文があったとき、どのような場合に処理A・Bにそれぞれ流れるかというと、 ・Boolean型で、falseのとき。 ・undefinedであるとき。 ・nullであるとき。 ・Number型で、+0、-0、NaNのとき。 ・String型で、空文字列のとき。 ちょっと端折っている部分もありますが、条件式の評価の結果が上記のいずれかになる場合、内部的に「false」に変換され、処理Bに流れます。それ以外は(例外はありますが)内部的に「true」に変換され、処理Aです。 今回の例ではtheForm変数が分岐に現れますが、ここではDOMオブジェクトを変数に格納しようとしています。無事格納できたとなると、評価した結果は内部的に「true」に変換されますが、それを ! 演算子で真偽反転して「false」になります。 そのスクリプト断片でやっていることは、(X)HTMLのform要素を取得する場合に、 > document.forms['aspnetForm']; この書き方ができるかどうかで、できないのであれば、 > document.aspnetForm; この書き方で再度取得する、というものです。ただ、現在の主流なWebブラウザで前者の書き方ができないということはまず考えられませんので、この分岐処理にはあまり意味が無いように思います。 【参考】 下記の「9.2 ToBoolean」が参考になると思います。この処理を行っています。その前段階でGetValueというのもあるんですが、わかりづらいと思いますので、ここでは読まなくても差し支えありません。 9 型変換 (Type Conversion) http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/9_Type_Conversi...