• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(hoge)("fuge"); はどういう意味を持つのでしょうか?)

(hoge)("fuge") はどういう意味を持つのでしょうか?

Wernerの回答

  • Werner
  • ベストアンサー率53% (395/735)
回答No.9

今回の件に関しては、 No.8の「関数宣言」と「関数式」という考え方が一番すっきり理解できると思います。 > var v = (function (f) f) (function (g) g) (function (n) n) (1); これは、 > var v = (function (f) f) (function (g) g) (function (n) n) (1); 1. function (f) f が、引数 function (g) g をリターン > var v = (function (g) g) (function (n) n) (1); 2. 1でリターンされた function (g) g が、引数 function (n) n をリターン > var v = (function (n) n) (1); 3. 2でリターンされた function (n) n が、引数 1 をリターン > var v = 1; という順序で処理されていると思います。 fやgが関数オブジェクトなので算術演算の対象には出来ないのでしょう。 無理矢理alertでも入れてみれば、fやgが何かは分かると思います。 var v = (function (f) (alert("f="+f),f)) (function (g) (alert("g="+g),g)) (function (n) (alert("n="+n),n)) (1); また、かっこで優先順位を変えれば期待している結果になると思います。 var v = (function (f) f*2) ((function (g) g/3) ((function (n) n) (1))); > 過去、別の質問でWernerさんに回答していただいたのを覚えています。 そのときの人だと気づいてませんでした^^; そのときに、functionオブジェクトがプロパティ持てる話はしてましたね。

関連するQ&A

  • 関数を呼び出すHTMLタグ<body onload="hoge()">について

    ほぼ独学でJavaScriptを学んでいるので、一般的なコード(HTML含め)の書き方が分かりません。 JavaScriptでは、ボタンや画像をクリックすると動作する、 というものが多いですが、そうではなくて、 (それはonclick等で関数を呼び出せば良いことは分かります) 時計のように、アクセスした瞬間から実行されるプログラムを複数書きたい時は、 どのようにするのが妥当でしょうか。 <body onload="hoge()">では、関数hoge()しか実行されないことになりますよね。 そうではなくて、hoge()以外にもいくつかの関数を実行したい時はどうするのが一般的ですか? ここでC言語のように、hoge()をmain関数(int main(void){})のような扱い方にすると、 hoge()関数内で呼び出されている関数も呼び出されることになりますが、そのような書き方で良いですか? アクセスの効率の良さから考えて、他に良いやり方はあるでしょうか。 ・・・前に困ったので<body>タグを2つ付けて2つの関数をonloadアトリビュートで呼び出すという、 奇々怪々なことをやってみて、それでIE7,FireFox3で動いていたので驚いたんですが、 そんなやり方はさすがに御法度ですよね(笑)。 答えにくい質問だと思いますが、アドバイスお願いします。

  • if (typeof hoge == 'funct

    ・下記コードで、「if (typeof hoge == 'function') {」は何をしているのでしょうか? ・なぜこの条件が必要なのでしょうか? ・なくても良い? //初期化関数 function init() {   if (typeof hoge == 'function') {     hoge();   }

  • PHPにおいての関数ポインタ(リファレンス)の実装の仕方

    こんにちわ, 今PHP4.3.4を使用してWebを作成しています。 C言語で言う関数ポインタを実装したいのですが,どうすればいいのでしょうか。 たとえば, function hoge(){ return 5; } function hoge2(){ return 4; } function hoge3(){ return 3; } と宣言して function main($a, $b)[ return ($a + $b); } としたときに, main(hoge(), hoge2()); をしたときに9 main(hoge()2, hoge3()); をしたときに7 とするようにmainの関数をつくりたいのですが,どうすればいいのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • -(ハイフン)_(アンダーバー)の先頭や末尾での使用不可にする正規表現の書き方

    JavaScriptの(正確にはJavaScriptのみというわけでは無く、どの言語にもいえることなのですが、)正規表現を使って、以下のような書き方を不許可にしたいのですが、なかなかうまくいきません。 絶対条件は、英数字のみです。 禁止にしたい:-hoge、hoge-、_hoge、hoge_ しかし、これはOK:ho-ge、ho_geなどなど........ ようするに、先頭末尾に-(ハイフン)_(アンダーバー)の使用を禁止にしたいのです。 但し以下の場合に使わなければなりません。 function check( str ) { if( str.match(/ここに制御文/) ) return false; else return true; } ↑ みたいな関数があって、下記のような処理をほどこしています。 if( !check( str ) ){ alert( strMsg ); return false; } わかりづらい内容かもしてませんが、 どなたご教授いただけば幸いです。 宜しくお願いいたします。

  • イベントリスナに登録される function(e){} の "e" はeventオブジェクト?

    私はイベントリスナ登録時の匿名関数に渡す引数eの意味が今まで理解できていませんでした。 最近、下記コードを実行することで、 <script type='text/javascript'> window.addEventListener ('click', function(e){ console.info(e); // 引数をコンソール表示 (要Firebug) for (p in e){ console.info(p + ' = ' + e[p]); // プロパティを列挙 } }, false); </script> 「eventオブジェクトを渡しているらしい」と朧気ながら理解できました。 ただ、疑問点も残ります。 私の理解では、匿名関数は (function(str){ alert(str); })('Hello'); のように明示的に引数を渡さなければ、引き渡された値は undefined となるはずでした。 変数eの値はどこから出現したのでしょうか? そもそも、変数eはeventオブジェクトなのでしょうか?

  • クラスを定義したいのですが下記は同じ意味でしょうか

    JavaScriptで、クラス(のようなもの)を定義したいのですが、 下記は同じ意味でしょうか? ・var Hoge = function() {}; ・function Hoge() {}; 上は、Hogeクラスを定義したことになるのでしょうか? それとも単に無名クラス(?)を、変数へ格納しただけ?

  • Qtの文字列変換について

    初めて質問させて頂きます。 現在下記の環境にて開発をしております。 OS:Windows7 言語:C++(VS2005) Qt:4.7.3 下記のコードを試すと、違う結果となってしまっております。 私には、なぜ違う結果となるかわかりません。 C++の基本的な動作の話でしたら申し訳ありませんが、是非ご教授下さい。 ----- QVariantMap test; test.insert( "STR_TEST", "abcde" ); QByteArray hogehoge = test.value("STR_TEST").toString().toLocal8Bit(); char* hoge1 = hogehoge.data(); char* hoge2 = (test.value("STR_TEST").toString().toLocal8Bit()).data(); ----- これでhoge1とhoge2の内容が違ってしまいます。 hoge1は"abcde"がとれています。 hoge2は失敗しているようで、初期値のままのようです。 なにか変換の手順等の問題があるのでしょうか? 宜しくお願いいたします。

  • javascript php 連携

    よろしくお願いします。 javascriptの『onchange』値をPHPの変数に入れたいと苦戦しています。 <html> <head> <script type="text/javascript"> function hoge1(){ var x = $('str1').options[$('str1').selectedIndex].text; やりたいことはここでPHPの変数『list_a』にjavascriptの変数『x』の値を入れたいです。 } </script> </head> <body> ここに結果表示 <?= $list_a; ?> <select id="str1" name="str1" onchange="hoge1()"> <option>hoge1</option> <option>hoge2</option> <option>hoge3</option> </select> </body> </html> よろしくお願いいたします。 ちなみにAjaxは全くわかりませんのですいません。。。

    • ベストアンサー
    • PHP
  • PHP コードを文字列として出力する方法

    お世話になります ダブルクォーテーションで囲っても 「PHP コード」を「文字列」として出力する方法 つまり、evalの逆の関数のようなものはありますでしょうか $a['huga'] = 2; $b['hoge'] = 3; //式 $c = $a['huga'] * $b['hoge'] ; abc($c = $a['huga'] * $b['hoge'] ); function abc($str){ //ここでなんちゃらほんちゃら //もしくはfunctionの外側でなんちゃらもでも可 echo $str; } 期待する出力結果 $c = $a['huga'] * $b['hoge'] ; 実際の結果 6 $の前に¥を入れてダブルクォーテーションで囲めば、 または、シングルクォーテーションの前に¥を入れてシングルクォーテーションで囲めば 文字列になるのはわかりますが 式の文字列には直接、手を加えず関数等で実現するやり方が知りたいです ※連想配列のキーの囲み文字はシングルクォーテーションです、ダブルに出来ない条件でお願いします。 お忙しい中恐縮ですが熟練者の方でわかる方がいましたら お教え下さいませ

    • ベストアンサー
    • PHP
  • 文字列strの中から文字cを探すプログラム(C言語)がわからない

    文字列strの中から文字cを探すプログラム(C言語)がわからない 柴田望洋さんの「[新版]明解C言語」という本の演習11-2なんですがどうしてもわかりません。間違いは無いと思うのにコンパイルすると警告を吐かれます。 僕が書いたプログラムを載せます。 /* 文字列strの中に、文字cが含まれていれば(複数ある場合は、最も先頭側とする)、 その文字へのポインタを返し、含まれていなければNULLを返す関数 char *str_chr(const char *str, int c) {} を作成せよ。 */ #include<stdio.h> char *str_chr(const char *str, int c){ while(*str){ if(*str==c) return str; str++; }     return NULL; } int main(){ char *str; char c; scanf("%s",str); scanf(" %c",c);     printf("%d",str_chr(str,c)); return 0; } コンパイラは「関数str_chrのif分の中のreturn strの型変換に問題がある」と言っているんです。 型変換はしるつもりは無いのにコンパイラはなぜそのように認識するのでしょうか。 またネット答えを探しましたがどうやらこのreturn strの部分はreturn (char*)strが正解のようです。意味がわかりません。strはポインタなのになぜまたわざわざchar型に変換しているのですか?といか(char*)の意味が根本的にわかりません。 質問ばかりですみません。初心者でポインタがどうにも理解できないんです。 誰か詳しい人教えてください。 お願いします。