- ベストアンサー
クロージャーの利点が理解できない
クロージャーの利点はグローバル変数を使わずにコードがかけると認識しているのですが、 http://dqn.sakusakutto.jp/2009/01/javascript_4.html だとcがグローバルじゃないけどfがグローバル変数なんで結局グローバル変数が存在する事になって意味がないような気がします。 他のサンプルでもだいたいこんな形です。 それでもクロージャー使う方がいいのでしょうか? ご教示頂けると幸いです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (5)
- Chaire
- ベストアンサー率60% (79/130)
- fujillin
- ベストアンサー率61% (1594/2576)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2281)
- babu_baboo
- ベストアンサー率51% (268/525)
- babu_baboo
- ベストアンサー率51% (268/525)
関連するQ&A
- javascriptのクロージャが理解できずに苦しんでいます。
javascriptのクロージャが理解できずに苦しんでいます。 下記のようなコードをよく見るのですが、a()とfuncA()()が等価のようなのですが 実行するとa()の場合のみ変数の値が維持されます。 a()とfuncA()()の違いを理解したいと思っています。 どなたかどうぞよろしくお願い致します。 またクロージャのわかりやすい解説サイトなどご存知の方いらっしゃいましたら 合わせてよろしくお願い致します。 function funcA() { var i = 10; return function() { i++; alert(i); }; }; var a = funcA(); console.log(a() === funcA()())//true funcA()();//11 funcA()();//11 funcA()();//11 a();//11 a();//12 a();//13
- ベストアンサー
- JavaScript
- JavaScriptのクロージャの挙動の違い
JavaScriptのクロージャの挙動の違い こんにちは。今現在JavaScriptの学習をしているのですが、なぜこのようにしなければならないのかがわかりません。まずはやってはいけないコード var add_handler=function(nodes){ var i; for(i=0;i<nodes.length; i+=1){ nodes[i].onclick=function(e){ alert(i); }; } }; 正しい例 var add_handler=function(nodes){ var i; for(i=0;i<nodes.length; i+=1){ nodes[i].onclick=function(i){ return function(e){ alert(i); }; }(i); } }; 本には変数のコピーしたものにアクセスしているわけではないことに注意と書いてありました。悪い例がなぜ悪いのかはなんとなく理解できました(おそらくイベントハンドラが呼ばれたときに呼び出されるからと理解)が、それの対処法として下の記述方法で解決できるのかがどうも納得できません。 よろしくお願いいたします。
- ベストアンサー
- JavaScript
- Yahoo apiをJavascriptで作成
Yahoo apiの以下のURLはPHPで作成されています。(サンプルコード集より) http://cgi.geocities.jp/ydevnet/sample/shopping/sample8/ContentMatc... このapiをJavascriptで作成することは可能でしょうか? 可能であれば、以下のURLのmooraku.js を改良して作成してみたいと思っています。 http://common1.biz/material/javascript/21/ もし可能であれば、 1、画像 2、価格 3、商品名 4、商品説明 の4要素をJavascriptで表示させるには、どうすればよいのでしょうか? 具体的に改良方法をご教示いただければと思います。 大変申し訳ございませんが、お詳しい方、よろしくお願い致します。 m(_ _)m
- ベストアンサー
- JavaScript
- コンパイルエラー
こんにちは。 本を見ながらソースコードを打って、コンパイルをすると、 「'sample8' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と表示されます。 コンパイルソフトは、 bcc1です。 問題のソースコードはこれです。↓ #include <stdio.h> main () { int i = 1; tloat f = 0.2; double d = 1.25; printf("変数i:%d f:%f d:%lf", i, f, d); return 0; } 理由の分かる方は回答お願いします。
- 締切済み
- C・C++・C#
- データベースから取り出したテキストの改行
MYSQL+PHP+JAVASCRIPT にてサイトを作っています。 行き詰っております。助けてください。 MYSQLからPHPにてテキストデータをとりだし、JAVASCRIPTに引き渡したいのですが、上手くいきません。 -----状況----- データベースから変数$strを取り出し、次のコードでJAVASCRIPTの関数sampleに$strを渡しまます。 <input type="button" value="実行" onClick="sample('<?=$str?>')"> ここで、$strに改行が含まれていると、 <input type="button" value="実行" onClick="sample('こんにちは 太郎さん')"> のように2行に分割されたhtmlが書き出されてしまい、JAVASCRIPTでエラー(unterminated string literal)が出てしまいます。 この改行を変換してやる必要がありそうなのですが、その方法がわかりません。 以上、長い質問ですが、よろしくお願いいたします。
- ベストアンサー
- PHP
- javascriptに関して
javascriptに関して document.getElementById("greeting").innerHTMLという一文があるのですが、 サンプルを書いても.innerHTMLの意味がよくわかりません・・。 サンプルコード内で.innerHTMLを抜いてしまった場合エラーが出てしまったので、 必須のプロパティであることは認識しているのですが、 このプロパティはどのようなものなのでしょうか? ご存じの方がいらっしゃいましたらお願い致します。
- 締切済み
- JavaScript
- undefinedを表示させない方法はありますか?(javascript)
undefinedを表示させない方法はありますか?(javascript) コードを入力して、文字を表示させているのですが、 以下のソースになります。 その時に、イベント処理をonkeyupにしていて、 入力しているのと同時に表示させています。 その時に、1とか10とか入力している途中に、 undefinedが表示されてしまいます。 空白でもいいのですが、表示させない方法はありますか? 教えて下さい。 <SPAN>とinnerHTMLを使用しています。 <HTML> <BODY> <SCRIPT LANGUAGE=JavaScript> <!-- function sample(f) { var sample = new Array() sample['100'] = 'りんご' ; sample['101'] = 'オレンジ' ; sample['102'] = 'メロン' ; document.getElementById('ans').innerHTML = sample[f.code.value] ; } // --> </SCRIPT> <FORM NAME=f> <INPUT NAME=code SIZE=4 onkeyup="sample(this.form)"> <SPAN ID="ans"></SPAN> </FORM> </BODY> </HTML>
- ベストアンサー
- JavaScript
- scriptの記述について
JavaScript経由でActionScriptを勉強しようとしています。 さしあたりサンプルのコードなどを参考に勉強しているのですが、 例えば getElementById('text') などと記述があった場合、 なぜElementのEとByのBとIdのIが大文字になるのか、そのルールがイマイチわかりません。 サイトや本などでも調べたのですが、その辺りについての説明が載っているものが少なく、「そういうもの」という認識しかありません。 自分でオリジナルのScriptを記述する際に判断がつかないので、記述のルールなどございましたらご教示いただけますでしょう。 よろしくお願いします。
- 締切済み
- JavaScript
- JS Object要素に読み込んだデータを配列に
JavaScript Object要素に読み込んだデータを配列変数に格納したい [html] <object data="sample.txt" type="text/plain" width="300" height="100"></object> [sample.txtの内容] United States, アメリカ China, 中国 Germany, ドイツ Japan, 日本 [JavaScript] // 配列に読み込まれたデータ const data = [ ["United States", "アメリカ"], ["China", "中国"], ["Germany", "ドイツ"], ["Japan", "日本"] ]; [仕様] ・ローカル環境であること ・jQueryなどのプラグインは不使用 ・ファイルリーダーは使わない ・JavaScriptのコードを用いて実現させること 以上から、 Object要素に読み込んだデータを配列変数に格納できますか?
- 受付中
- JavaScript
- vimの環境設定について
http://www.kawaz.jp/pukiwiki/?vim#cb691f26 こちらのサイトを見ながら(というか自動認識の部分をコピペ)で文字コードの自動認識はクリアでき,文字化けは起こりませんでした.ですが,新しくファイルをvim上で作るときにまでそれが影響してきて*.texファイルはEUC-JPでコンパイルしないといけないのにUTF-8になってしまいます.:set fileenc~でEUCを指定しても結局はUTF-8で開かれてしまいます.しかもfile2でそのtexファイルの文字コードを確認してもASCIIとなりnkfで変換しても変わりませんでした. *質問:文字コードASCIIはnkfで変換できないのでしょうか? *質問:どうにか自動認識を保ったまま*.texファイルをeuc-jpで保存する方法はありませんか?
- 締切済み
- Linux系OS
お礼
コードまで示して頂きありがとうございました。 >> クロージャーの利点はグローバル変数を使わずにコードがかけると認識しているのですが、 >それも利点の一つですが、本質ではないと思います。 これで、何かスッキリしたというかふっきれた気持ちになりました。