No.1ベストアンサー
- 回答日時:
C言語では、論理演算の結果は整数の 1 か 0 しかとりませんので、
0以外なら1、0なら0となるような結果を得たいときに !! を使うこ
とがあります(可読性が下がるのであまりおすすめされませんが)。
JavaScript でこれをするということは、true に相当する値(つま
り、0 に相当しないなんらかの値をもっている)なら true そのも
の、0 に相当する値なら false そのものを得たいということでしょ
う。
document.all というのは IE4 以降の拡張機能だそうですので、そ
れ以前のものでは document.all の値は false 相当になります。
つまり、これに !! をつけることで、IE4 以降なら true、そうで
なければ false となるという判断材料にしていると思われます。
変数名の ie もそういう意図でしょう。
しかし、他のブラウザでそういう拡張がないという保証はないので、
ブラウザの種別の判断としてはいい方法とは思えませんけどね。
document.all の機能の有無を知りたいのであれば、正しい方法だ
と思います。
ありがとうございます!
IE4以上であれば
ie=document.allはieの中にオブジェクトが入る
ie=!!document.allはieの中にtrueが入るということでいいんでしょうかね?
む、むずかしい・・・・
No.4
- 回答日時:
punchan_jpさんへ
すみません。よく読めば確かにさんのおっしゃっているように受け取ることができます。不慣れなのか、読解力が乏しいのか、申し訳なく思います。
katsudonさん、punchan_jpさんへ
ご迷惑をおかけしました。お詫び申し上げます。
No.3
- 回答日時:
antigen さん、
えっと、議論するつもりはないんですが、document.all が論理値
でないことは知っています。私の回答からは読みとれなかったでしょ
うか? katsudon さんには伝わったようなので、安心していたので
すが。
で、ie=!!document.all がブラウザに依存するとも言っていません。
javascript の機能をもつどのブラウザでも動作し、ie という変数
には true か false が正しく入ることでしょう。
ですが、ie という変数名は、ブラウザを判別する意図で使われて
いるのは明白ですよね?IEだけの拡張機能であるとは限らないのに、
ブラウザの判別目的で使っているので好ましくないと言っているの
です。
No.2
- 回答日時:
「ie=document.all」では「document.all」と同じものが「ie」に代入されてしまいます。
この場合は「ie.tags('TABLE')」のようにして使うことが出来ますね。「ie=!!document.all」はInternet Explorerあるいはそのコンパチブルかどうかを論理値(trueまたはfalse)として持っておくねらいがあるのでしょう。punchan_jpさんへ
JavaScriptでは文脈によってオブジェクトを適切に型変換するので「document.all」に対して文字列(Stringオブジェクト)が要求されれば、もし「document.all」が存在すれば「[object]」というような文字列となるでしょう。なければ「undefined」になるかもしれません。論理値(Booleanオブジェクト)を要求するような文脈では「document.all」が存在しなければ「false」となります。「document.all」がある場合には、例外を除いて「true」となります。「document.all」はInternet Explorerではコレクションクラスのオブジェクトとなっているので、こういった単純な型変換ではObjectオブジェクトのようにふるまうでしょう。「document.all」は論理値ではありません。
この場合「document.all」がInternet Explorerの拡張機能であるかどうかは問題ではなくて「document.all」というオブジェクトが存在するかどうかを調べるだけです。したがって「ie=!!document.all」はブラウザに依存するコードではありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
選択肢によってラジオボタンを...
-
javascriptのdocument.allにつ...
-
ラジオボタンでreadonlyの切替え
-
ポップアップウインド
-
jspからjavascriptの変数引継ぎ
-
パス付きサイトのjavascript解析
-
C#で、ContextMenuStripに動的...
-
クリックすると上に開くアコー...
-
javascript 変数名の連結をしたい
-
別のSubで宣言されている変数を...
-
window.openでタイトル名の指定
-
static constメンバ変数(配列)...
-
idを使わずにonclickで自身の要...
-
日本語入力の禁止
-
ActiveXobjectが作成できない
-
jQuery Easy Display Switch wi...
-
1日1回だけ引けるjavascriptお...
-
javascriptで数値を3桁区切りで...
-
HTML:Tableタグに対し、JavaScr...
-
ジャバスクリプトで空白(スペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javascriptのhtml出力についてa...
-
codejump 模写コーディングgall...
-
JavaScript window.openで開く...
-
XMLでのAttributeを持ったNode...
-
Null またはオブジェクトではあ...
-
Latexに関する質問です。
-
bxsliderでpagerCustomのクラス...
-
excle VBA とweb上の検索を利用...
-
window.onloadを複数実行したい...
-
VB2019でウェブサイトにID/PASS...
-
javascriptの基本的なことだと...
-
DOM要素を削除しても、イベント...
-
Javascript ページ読み込んだら...
-
webページ上のTabキーの動き
-
responseTextについて
-
ie操作 フレームのURLが...
-
Javascriptで定期的にF5を押す...
-
LaTeX:数式を等号揃えにする方法
-
removeEventListenerの必要性
-
Firefoxでマウス座標の取得
おすすめ情報
