• ベストアンサー

JavaScriptの記述について

JavaScriptの以下のような記述を見たのですが、 functionを()();で囲むとどうして実行されるのか 理解ができません。文法的にどのように解釈したらよいでしょうか? (  function()  {   alert("HELO");  } )();

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

順序だてて書くとこんな感じ: var $a = function(){ alert( 'H' ); }; // 無名関数オブジェクトを作成。 $a(); // 関数オブジェクトを実行。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1697441
nihon_no_samurai
質問者

補足

なるほど!わかりました。ありがとうございます。 やはりこのような無名関数を使う目的は難読化でしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#17489
noname#17489
回答No.2

変数名の衝突を避けるためかと思われます。 1つのhtmlに複数のスクリプトを入れようとすると、変数名の衝突が起こり動かなくなることがあります。 このように書いて、変数はこの無名関数の中でvarで宣言すると、変数はこの無名関数の局所変数となるため、他のスクリプトで同じ名前の変数が使われていても問題が起こりません。 (関数もオブジェクトであることを利用すると、関数名の衝突も回避できます。)

nihon_no_samurai
質問者

お礼

ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 現在のhtmlにjavascriptを記述する際の書き方を教えてくださ

    現在のhtmlにjavascriptを記述する際の書き方を教えてください。 今までは以下のように記述していました。 このように<script>タグで囲む方法は古いらしいのですが・・・ <script type="text/javascript"> <!-- function test{   alert(1); } //--> </script>

    • ベストアンサー
    • HTML
  • Javascriptのいろいろなファンクション記述

    Javascriptにはいろいろな記述方法がありますが なぜみんな小難しい方の記述方法を選択するのでしょうか? 例えば、ファンクション 以下の1のように書けばいいのに、わざわざ2のように書くメリットを教えて下さい 1だとファンクションの位置を気にせず呼び出すことが出来るのになんで2みたいにするんでしょうか ・メモリの節約なのか? ・実行速度優位性なのか? ・1はレガシーで2が最新、W3C的な標準化がJavascriptにもあるのか? ・なんか一般的な書き方じゃないほうが、プロっぽくてカッコイイからか? さすがに一番最後の理由じゃないと思いますが 熟練者のかたお教え下さいませ (1) function hoge (){ } (2) var hoge = function(){ }

  • Javascriptで教えてください

    下記1だと実行できるのですが、2だと実行できないのはなぜでしょうか 1 <script type="text/javascript"> function OnButtonClick() { alert('クリック'); } $(function () { }) </script> 2 <script type="text/javascript"> $(function () { function OnButtonClick() { alert('クリック'); } }) </script>

  • javascriptの記述方法

    javascriptをhtml内に記述する時、 <script type="text/javascript> ~~処理~~ </script> だと思っています。 ただ、ボタンをクリックした時に、メッセージが表示される簡単なHTMLをonclickで作成する時  <input type="button" value="クリック動作確認" onclick="alert('ボタンがクリックされました')"> これだけで実行されます。(headタグにscript記述なしで動作確認。) なぜ、<script>記述がなくても動くのでしょうか? onclick等のイベントハンドラに動作を記述する際は、そういう物だと覚えておいたほうがいいのでしょうか? ※当然関数をonclickに使用する際は、onclick=関数(); と記述し、headのscriptタグに関数を記述すれば動くというのは分かっているのですが・・・。 なぜ、 onclick="alert('ボタンがクリックされました')" の場合は、noscript無しで、動作するのかが分かりません・・・。 ・onclick 属性 = javascript という判断をどこかでされているのでしょうか? その結果、noscriptに記述がなくても動く? ちょっと気持ち悪いので質問させて頂きました。 ご教授お願いします。

  • JavascriptとJqueryを混在し記述

    JavascriptとJqueryが混在したスクリプトファイル(.js)の書き方について質問です。 Jquery自体がjavascriptで書かれており結局はjavascriptであるということは理解していますが 気になるので質問させてください。 通常、javascriptの書き方として、スクリプトやその関数定義を1つのjsファイルに書くと思いますが、 Jqueryが混在しても考えは一緒で、ただ、ページが全て読み込まれた後(要素を特定できるようにするため)に実行したい場合の スクリプトを $(function(){ //Jquryや通常のjavascript }); の中にこのように書けばいいって話ですよね? つまり1つのjsファイル内に以下のようにスクリプトを混在させた書き方でもいいのですよね? ===== script.js ====== //(1)Javaスクリプト ←jsファイルが読み込まれたら実行するスクリプト //関数定義 function test(){ //Javaスクリプト } //(2)Jquery ←ページが全て読み込まれた後で実行するスクリプト $(function(){ //Jqueryスクリプト //Javaスクリプト }); 初歩的なことかもしれませんがすいません。

  • javascriptの書き方

    javascriptの記述で不明点があります function javas(){ for (var day = 1; true; day++){ //--何かしらの処理 } alert(""); //--ここが呼び出せない } 最後の部分が呼び出せないのですが、もともと呼び出せないものなのでしょうか。 もし呼び出せるとしたらどのように書けばよろしいでしょうか。 よろしくお願いします。

  • JavaScriptでcgiの戻り値を受け取るには?

    JavaScriptの関数内でcgiを実行(submit)しています。 そのcgiの実行結果(cgiで記述しているexit 0などの0)を受け取る方法を教えてください。 受け取った値によって、alertでメッセージを表示させたいです。 cgiの実行からalertでメッセージを表示させるまでの処理を JavaScriptの1つの関数内で行いたいです。 よろしくお願いいたします。

  • Javascriptが特注文字解釈の対策

    Javascriptが特殊文字を先に解釈してしまい、うまく機能しなくなるだけでなく、XSS脆弱性にもなるので、対策を考えています。 いろいろ検索などしてみたのですが、あまり情報がなく、みなさんどうされているのかなと。 たとえば PHPから出力した変数 $value をJavascriptの引数に入れる場合 <img src="http://....." onclick="myfunc('{$value}')" /> こんな感じの場合 $value = "');alert('テスト"; とすると alertが実行されてしまいます。(これは当然ですが) そして $value = "');alert('テスト"; これでも同じく実行されてしまいます。 ' は ' の特殊文字で通常無効化のために変換しますが、Javascriptでは、この特殊文字も普通に解釈していくようです。 さらに $value = "');alert('テスト"; という風に最初に0をつけても、解釈されてしまいます。 やはり、javascriptの引数に入れる際に、こういったものは変換(\'などに)ではなく、削除してしまうのがベストということでしょうか。

  • javascriptの記述について教えてください。

    javascript初心者です。 ホームページを作成しているのですが、 後からjavascripを追加するのに面倒なので、 以下、ページのものを使おうか、使わず、普通に記述しようか悩んでいます。 http://www15.plala.or.jp/mi-u/website/jsexternal/ext003.html 悩んでいる理由として、上記のものを使うことにより、 ページを開いた時に何か不具合が起きないかがわからないからです。 不具合は、ページの表示が遅くなる?とか、ページが開かなくなる?など、です。 javascriptに詳しい方、使っても問題がないのか、 使わず普通に記述したほうが良いのか教えてください。 また、使わないほうが良い場合、理由なども教えていただけると助かります。 どうぞ、宜しくお願いします。

  • jQueryでの記述をjavascriptに

    下記のjQueryの記述をライブラリ無しのjavascriptでの記述にしていただきたいです。 imgタグのsrc属性とaタグのhref属性を相対パスから絶対パスに動的に変換させる必要があるのですが、ある事情でjQueryを使えないとの事で困っています。 どうかよろしくお願い致します。 <script type="text/javascript"> $(function(){ $('#hoge').children('img:not([src^=http])').each(function (){ var imgSrc = $(this).attr('src'); $(this).attr('src','http://xxxxxxxxxxxx' + imgSrc); }); $('#hoge').children('a[href^=○○○]').each(function (){ var aHref = $(this).attr('href'); $(this).attr('href','http://xxxxxxxxxxxx' + aHref); }); }); </script>

このQ&Aのポイント
  • 発熱時は普段とは異なる食欲状態ですが、食べやすいものや消化に良いものを選ぶと良いです。
  • 食欲がある場合、高カロリーなものや水分を摂取すると熱も下がりやすくなるかもしれません。
  • また、熱を出すために必要な栄養素やウィルスや菌を殺す栄養素もあります。
回答を見る