1 名前:デフォルトの名無しさん [2011/08/26(金) 13:32:13.80 ] ないようなので立ててみました 初心者から上級者まで気軽にどうぞ テンプレは今後決めていってください 関連スレ ★★Java質問・相談スレッド147★★ hibari.2ch.net/test/read.cgi/tech/1312958339/ Eclipse統合M31【Java/C++/Ruby/Python/Perl】 hibari.2ch.net/test/read.cgi/tech/1295886572/
643 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 13:39:20.23 ] >>642 HTMLに埋め込んでいるんだよね?
644 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 13:51:21.51 ] 最近はJavaScript(Ajax)やHTMLだけを駆使して作ったものをリッチクライアントと言うのか?
645 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 13:56:50.58 ] >>642 関数化してWindow.SetTimerじゃダメ?
646 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 14:03:36.55 ] >>643 はい、HTMLに埋め込んでいます
647 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 14:05:48.59 ] Web制作板の話題だな。
648 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 14:14:16.14 ] >>646 HTMLの<HEAD>と</HEAD>の間に、 <META HTTP-EQUIV="Refresh" CONTENT="5"> を埋め込む
649 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 14:17:00.62 ] >>642 板違い www.htmq.com/js/location_reload.shtml
650 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 14:28:12.54 ] >>648 できましたー!ありがとうございます 勉強して使わせていただきます >>645 ありがとうございます ググってみましたが例文が少なくて自分で作れませんでした・・・ >>647 ,649 すみません、リンク先の方法も勉強させていただきます
651 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 14:37:09.17 ] >>650 <!--と//-->の間に書いた処理を function hoge() {と}で囲む。 document.write(txt[txtno]); の次に、 setTimeout('hoge()',5000); をいれる。
652 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 14:53:18.16 ] >>651 それやったら <title> とか必要なものまで消える
653 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 16:32:03.80 ] これでどう? <html><head> <script language="javascript"> <!-- var txt = "ABCDEFG"; mmax = txt.length; //メッセージの行数を数字で function hoge() { txtno = Math.floor(Math.random() * mmax); document.getElementById("text").innerHTML = txt[txtno]; timerID = setTimeout("hoge()", 1000); } window.onload = function(){ hoge(); } //--> </script> </head> <body> <p style="font-size:1000%"> <span id="text"></span></body> </p> </html>
654 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 17:05:25.43 ] >>653 動作は問題ないが、タグの対応関係がおかしかったり、非推奨属性を使ってたり、onloadにhogeを代入すれば良かったり... 解決後に延々とレスしても仕方ないからこの辺で
655 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 17:15:39.88 ] >>654 ありがと、後は調べて直す
656 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 16:37:25.37 ] 質問させてくださいー。 picasaのアルバムからapiで画像情報を取得して、 1枚画像をランダム表示させたいと考えています。 jsonp形式でアルバム情報を読む込むところまではわかったのですが、 その中から画像情報を個別に取得し、ランダムで表示させる〜 ところでつまっています。 下記のjsonp形式のデータからどこを引っ張ってくればいいか わかる方いらしたら教えてください!!>< https://picasaweb.google.com/data/feed/api/user/113370727965830303581/album/HDRZMuzeumWojskaPolskiego?alt=json-in-script&callback=getPhoto
657 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 02:41:09.98 ] >>656 例えば、 https://lh5.googleusercontent.com/-8ODYDyaeYo8/Tw4D3-yHKiI/AAAAAAAAMYc/tRXYCM7yWpE/IMG_3309%252520-%252520Aladin%25252CSubtle%25252CRustic-Zmniejsz-1024.jpg とか、IMG_*.jpgが目的のファイルで、 https://lh5.googleusercontent.com/-8ODYDyaeYo8/Tw4D3-yHKiI/AAAAAAAAMYc/tRXYCM7yWpE/s72/IMG_3309%252520-%252520Aladin%25252CSubtle%25252CRustic-Zmniejsz-1024.jpg みたいに違うサイズのやつは目的のファイルの前に「/s72/」とかがついてるっぽい
658 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 09:01:21.80 ] media$group":{"media$content":[{"url":"https://lh5.googleusercon(略 が本体のところで、他はthumbnailとかtitleとかだね。
659 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 11:13:48.99 ] HTML側でリストから選択 選択されたものに対応するクラスを生成ってのやりたいんですけど これってswitchでいっこいっこ対処するしかないんでしょうか phpでいうnew $objName()みたいなことができないかと
660 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 12:25:43.73 ] var a = "F"; function F() {}; F.prototype.log = function () {console.log(arguments);}; new window[a]() こんな感じ? なんかもっとましな方法あったと思うけど忘れた 誰か補足するだろう
661 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 12:29:00.43 ] と思ったけど内容的にもWeb作成板いけって内容だな + JavaScript の質問用スレッド vol.97 + toro.2ch.net/test/read.cgi/hp/1327750531/
662 名前:デフォルトの名無しさん [2012/02/17(金) 02:46:26.66 ] >>596 > それに日本だとまだまだJSに対する言語的な偏見が多いからなー。 むしろ英語圏のほうがJavaScriptクソクソ言われまくってるって。 だいたい、「JavaScriptは根本的な問題を抱えている」とDartを作り始めたのはもとより、 Native Client作ってるのもJavaScript嫌いな連中が多くて JavaScripter達としばしば喧嘩状態になってるぜ。Emscripten遅すぎだろゴルァとか ジャップのほうがよっぽど、乗るしかないこのHTML5にって感じで無批判で従順ですね。ええ。 一番目立つはてなあたりがJavaScriptが主言語のウェブ屋だらけなせいかもしらんが。 いずれにしても、推進するにせよ批判するにせよ 海外のがパワーとダイナミズムがあるのは如何ともしがたい。
663 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 02:51:28.16 ] > むしろ英語圏のほうがJavaScriptクソクソ言われまくってるって。 聞いたこと無いな。 RubyがCoffeeScriptに変更すると聞いて ひんしゅく買ってたことなら知ってるがw
664 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 03:30:32.35 ] javascriptとネイティブコードの速度を比較したサイトってないかな? ググって最初の方に出た英語のサイトは見たんだけど、もっと色々見てみたい。
665 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 05:05:15.26 ] そんな比較に何の意味があるんだ
666 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 06:46:03.94 ] >>664 V8とJaegarMonkeyだけでChakraやJavaScriptCoreやCarakanとかはないが一応 attractivechaos.github.com/plb/
667 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:13:41.51 ] >>662 Javascript遅いってどんだけ無知なんだw
668 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:28:28.65 ] いやそういう話じゃなくてね
669 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:50:39.74 ] Javascriptは言語としてはかなりまともな部類。 文句が多いのはブラウザ上の実行環境で、 主にAPIの設計とブラウザ間の非互換性。
670 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 19:46:01.97 ] それもあるけどうんこなイディオムが広まりすぎたっていうのもあるって パーフェクトJSには書いてたな まぁ確かにWebにはうんこな書き方の情報たくさん転がってるし否定はしないがw 言語はいいとしても誤解されすぎた言語だよなぁ
671 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 19:58:05.44 ] strictモードがないと使い物にならないのはガチ
672 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 20:26:25.54 ] この世にまともな言語なんて存在しない まともになれる可能性があるのもLispくらい あとは全部糞
673 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 21:00:45.36 ] 歴史的事実をねじ曲げてまともな言語としようとする理由がわからんわ
674 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 21:30:23.31 ] その歴史的事実とやらを具体的に語ってみたら?
675 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 21:50:11.20 ] JavaScriptはマイクロソフトが DHTMLを使って広告を配信する目的で作った。 関数しかない簡易的な言語だったが それを無理やりオブジェクト指向とか言い始めた。
676 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 21:56:43.03 ] はあ? どこの星の話?
677 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 22:03:01.54 ] MSが作ってるのはネスケが作ったJSをパクったJScriptだからな 作った企業も違うしなー ほんとどこの星だよw
678 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 22:21:00.14 ] オブジェクト指向の意味も分かってない
679 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 22:23:33.84 ] MSちがw
680 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 22:49:28.19 ] >JavaScriptの登場初期は、ブラウザベンダー間で言語仕様の独自拡張が行われていたため、ブラウザ間の互換性が極めて低かった。 これが糞だった一番の原因。あとは1月が0だったりとかトンデモな仕様がいくつか散見される
681 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 23:18:43.23 ] 1月は普通0だろ。
682 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 23:33:00.36 ] ブラウザ間の差異はまぁMS死ねで片付くとして 言語的な仕様でトンデモな仕様ってそんなにあるっけ? classがないとかは抜きで
683 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 23:48:00.33 ] ローカルスコープ変数は関数ローカルしかない arrayの型が弱い with氏ね
684 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 23:48:55.47 ] >>682 使ってはいけない構文とかが解説本に載っている言語は少ないぞw
685 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 23:50:49.89 ] ;の代わりの改行氏ね
686 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 00:16:27.46 ] >>683 型が弱いってObjectと然程かわらんって事? まぁ実際そうだけどそれが何か悪いの? スコープも別にそんなとんでも仕様でもないだろ 改行で;が補完云々とかはたしかに面倒くさい仕様だな
687 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 00:46:40.91 ] >>686 クイズです。 argumentsは配列ですか? 可変引数と配列どちらを渡されても、可変個引数として処理する関数はどう書くでしょう?
688 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 01:06:52.56 ] べつにプロトタイプベースなのは、とんでもじゃないだろ。 ブロックごとにスコープが作られない、ってのも、スコープは関数によってのみ 作られると明確なルールがあるだけ。むしろ関数がネストできないのに、スコープは ネストするCのほうが奇妙な仕様、と言えなくもない。 Bad Partsが嫌ならJSLint使えば良い。
689 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 01:13:32.87 ] >>687 argumentsは配列ではない arguments使えばいいだろ
690 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 01:18:00.03 ] ところで、「可変引数と配列どちらを渡されても、可変個引数として処理」はBad Partsじゃないの?
691 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 01:21:27.16 ] 最近JavaScriptから離れてて、また勉強したいから、良ソースコードを教えてくれ なるべく数千行レベルの軽いやつを頼む
692 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 01:23:32.34 ] >>691 質問スレに行きなよ
693 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 01:24:30.32 ] >>687 クイズです。 JavaScriptにArray型はありますか?
694 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 01:35:39.36 ] オブジェクトのレングスとかキーとかさっと取得できるメソッドとかプロパティを 初めから用意しとけよとか小言は一杯出てくるな
695 名前:664 mailto:sage [2012/02/18(土) 01:36:35.14 ] >>666 サンクス!スゲー参考になる。 これ見るとV8はかなりネイティブコードに近い速度でびびるな。 その内事前コンパイルしたものと遜色ない速度になるんだろうね。楽しみだ。
696 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 01:46:13.52 ] >>688 JQueryなどのライブラリで、グローバル空間を汚染しないために、 Objectの中や関数の中で初期化コードを記述するバッドノウハウが連発されてる。
697 名前:664 mailto:sage [2012/02/18(土) 01:47:54.58 ] あと、パターンマッチングでPerlが断トツで速いのはさすがだぜ。 これは単にライブラリの出来の問題だけど、そういうのも大事だよね。
698 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 07:38:44.74 ] >>696 var a { init : function () {}, b : function () {} }; こういうコード? Objectオブジェクトの事なのかobjectの事なのかわからん ちょっと前(ES3)迄だとundefinedとかがひどかったな 上書きできるってなんだよって思うわ
699 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 08:40:39.10 ] >>696 こういうコード?なぜこれがバッドノウハウ? (function () { var undefined; )();
700 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 09:42:35.06 ] >>699 たぶん>>696 はブロックスコープがないことにイライラしてるんだろうね だからといってバッドノウハウ呼ばわりはやりすぎだけど
701 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 09:46:21.90 ] ES6準拠のletとconstがはやく実装されますように・・・
702 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 10:26:44.01 ] >>700 Array型がないことにもバッドノウハウ呼ばわりしそうだね。 バッドノウハウ呼ばわりはやりすぎに同意。
703 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 10:32:16.14 ] というか、どう見てもECMAScriptスレの話題だろ 何でこのスレで議論になってるのかさっぱりだ
704 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 10:57:24.85 ] 住み分けなんてずっと曖昧なままやってきただろ どう見たらそんな風に思えるんだ
705 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 13:03:58.26 ] >住み分けなんてずっと曖昧 じゃあこのスレいらないじゃん ecmaスレに統一しろよ
706 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 14:25:39.22 ] ecmaはecmaだろ
707 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 15:29:40.06 ] むしろecmaがいらね
708 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 17:18:46.02 ] acme
709 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 17:25:49.67 ] いやw ecmaはいるだろw こういう認識こそがJavaScriptが糞と言われる原因じゃないのか? お前が書いてるscriptは本当にJavaScriptか?
710 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 17:33:09.64 ] つ JScript
711 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 17:48:26.85 ] JavaScriptとECNAScriptって何か違うの?
712 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 18:03:04.74 ] ジャバスクって呼ぶ奴死滅すればいいのに
713 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 18:09:38.74 ] > ECNAScript はつみみです
714 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 18:19:17.33 ] スクミズネコミミと聞いて
715 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 19:00:13.01 ] スクミズネコミミょぅι゛ょと聞いて
716 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 20:14:19.70 ] 俺はウサミミの方がいい
717 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:05:09.92 ] >>699 ただの即時関数パターンだよねw
718 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:17:49.64 ] 即時関数パターンは、引数と戻り値が使えるから ブロックよりもわかりやすいコードが書けたりするよ。 var ret = (function (value) { return value+1; )(hogehoge_value); 更に発展形でプライベートメソッドと パブリックメソッドをもったオブジェクトも作れるよ。 var My = (function (msg) { function add() { return 'hello '; } function get() { return add(msg); } return { get: get }; //getのみ公開 )('world'); console.log(My.get()); ブロックよりも、柔軟で多くのことが出来るパターン。
719 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:18:56.51 ] varでグローバル空間汚染する例かよw
720 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:23:55.34 ] 汚染しないように書けばいいだけだろ、 そもそも汚染するコード書いたらダメなのか? function hoge() {} これも汚染するって分かってる? このスレは関数1つ書くこともできないのか、
721 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:25:24.94 ] なお>>718 のようなのは、 「JavaScriptパターン 優れたアプリケーションのための作法」にのってます
722 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:32:41.30 ] 別に関数宣言する必要性ってないからなー 毎日JSには書いてるけど、ここ2,3年関数宣言した覚えがない
723 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:34:34.63 ] それはダメ人間の例ですか?
724 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:43:16.04 ] >>720 汚染しないためにはもうひと囲み必要だから問題なんだろ。
725 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:18:15.42 ] var hoge = function hoge() {}; と書くのは個人的に許せない。冗長だろ。
726 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:20:20.73 ] >>724 なぜ関数で括るのが問題なの?
727 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:28:32.76 ] >>725 関数式と関数宣言はちょっとだけ違うのよ
728 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:44:48.69 ] とくにJScript (5.8以前)はESの仕様通りになってない
729 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 00:10:55.53 ] ESのどのバージョンだよ?
730 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 00:52:49.57 ] 無名関数は排除される方向
731 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 01:30:49.48 ] >>730 お前そんな事思ってるの? バカだなぁw
732 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 02:00:48.80 ] >>731 俺の妄想を書いたわけじゃないんだがw英語勉強しようねw
733 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 03:31:32.86 ] FunctionExpressionのIdentifierを気にせず書きたいのはヤマヤマなんだが IE8までが消滅してくれないと面倒な話が色々と出てきて萎える スマートフォン環境だけで使うコードでは気兼ねなく使ってるけど
734 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 08:43:27.81 ] >>731 何が言いたいの? 英語?
735 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 08:45:29.56 ] >>733 気にする必要はないだろ。
736 名前:デフォルトの名無しさん [2012/02/19(日) 11:43:20.49 ] IE9で、 右クリックメニューから呼び出す使い方をしたとき、 ドキュメントをオープンしたあと、 external.menuArguments.document.clear() とやると、エラーになったり、ならなかったりするんですけど、 この違いはなにが由来なんでしょう?。 またエラーにならないクリアの仕方はあるでしょうか。
737 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 13:42:23.44 ] >>735 なぜ?
738 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 14:18:32.51 ] 関数でラップする書き方否定してる奴はただの老害だから早く引退して!><
739 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 15:39:44.39 ] >>738 じゃあ、お前は代わりにどうするの?
740 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 16:10:06.63 ] >>739 代わりに?は?
741 名前:738 mailto:sage [2012/02/19(日) 16:16:48.08 ] >>739 (・З・)?
742 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 16:50:53.73 ] ラップしないと汁が回りに飛び散るので、 ラップして、チンがプラクティス。
743 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 17:09:30.03 ] 関数でラップする書き方に問題はない
744 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 17:17:41.66 ] >>718 前半は意味ないだろ、それどころか有害
745 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:37:38.00 ] >>744 ぷっ。初心者ですか? オライリー本にも乗ってるやり方なのにね 即時関数になってるから、プライベート変数が使える。 ローカル変数になるから、速度も早くなる。 4.5.1には即時関数のパラメータ というタイトルで ブラウザ以外でのコードの相互運用性の向上について書いてあるね。 4.5.2には即時関数からの戻り値というタイトルで開設されてるね。 詳細知りたければ、勉強しろってことさ。 お前は初心者なのだからさ、勉強しないで文句だけ言ってたらダメだよw
746 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:39:19.52 ] >>745 おまえは勘違いしてる 前半には意味がない
747 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:40:42.27 ] 即時関数をキチンと解ってない奴が>>718 を書いたのが悪い
748 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:47:39.03 ] 意味がない理由を述べよ
749 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:48:37.56 ] 数値に1を足すだけのコードに何か意味があるとでも? って答えが返ってきたら、こいつは馬鹿確定だ。 サンプルに実用的何かを求めるな。 それを使って何が出来るかを考える 頭すら無い。
750 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:49:50.48 ] var counter = function (seed) { return function () { return seed++; } }(1); せめてこんな感じの書いておけよ
751 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:50:19.76 ] var ret = hogehoge_value + 1;
752 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:51:32.34 ] >>751 バカ確定しちゃったなw
753 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:52:22.33 ] 自分の頭で考えられない儲登場 即時実行関数は代用なんだから正当な方法を用意したほうがいいじゃないの? って意見は当然出る。しかしどっちが老害かと。自覚ないんだろうな。
754 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:54:15.08 ] 即時実行関数はそれはそれで便利なもの。 即時実行関数のうち一部はブロックなので代用できるが、 引数とか戻り値が明確という利点はブロックでは表現できない。
755 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:55:35.77 ] >>752
756 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:56:59.37 ] むしろ、ブロックが関数の代用ではないのか? 本来ブロックは関数に出来るはず。 なぜ関数にしないのか。 一回しか使わないから? 関数の中でしか使わない関数だから? そういうどうでもいい理由で関数から ブロックに変更するのはおかしいよね。
757 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 18:58:52.11 ] 書くのめんどーだろ
758 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:01:39.14 ] >>753 自分の基準でしか考えられない老害登場。 「代用」という単語の背景に、暗に自分の経験を 仮定していることに気付いていない、真の老害。
759 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:01:40.79 ] やたらコードを書くのではなく、 コード自信にやっていることを語らせるべき。 よくあるこんなコードを他の言語だとどう書き換えるか。 function() { //○○の処理 ・・・長いコード・・・ //△△の処理 ・・・長いコード・・・ //□□の処理 ・・・長いコード・・・ }
760 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:03:21.67 ] コードが長いんだから関数にすべき function ○○() { ・・・長いコード・・・ } function △△() { ・・・長いコード・・・ } function □□() { ・・・長いコード・・・ } function hoge() { ○○(); △△(); □□(); }
761 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:05:36.97 ] >>760 の欠点は、○○、△△、□□のスコープが広がってしまっていること JavaScriptならこう書けます。 function hoge() { (function ○○() { ・・・長いコード・・・ }()); (function △△() { ・・・長いコード・・・ }()); (function □□() { ・・・長いコード・・・ }()); }
762 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:06:03.28 ] >>758 ただの言葉遊びなら他所でやってくれないか
763 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:07:47.70 ] もちろん、即時関数は関数なのでこう書けます。 function hoge() { var ret1 = (function ○○() { ・・・長いコード・・・ }()); var ret2 = (function △△(value) { ・・・長いコード・・・ }(ret1)); var ret3 = (function □□(value) { ・・・長いコード・・・ }(ret2)); }
764 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:07:55.66 ] >>762 早く引退すればw
765 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:08:35.23 ] >>761 長いコードなんだろ、hogeの見通し悪くて読む気になれん
766 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:09:57.45 ] >>764 老害の意味わかってる?
767 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:10:01.78 ] もしhogeの中があまりにも長くなって 分けたくなった時でも、リファクタリングは簡単です。 function △△(value) { ・・・長いコード・・・ } function hoge() { var ret1 = (function ○○() { ・・・長いコード・・・ }()); var ret2 = △△(ret1); var ret3 = (function □□(value) { ・・・長いコード・・・ }(ret2)); }
768 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:11:11.23 ] >>767 リファクタ簡単、はいいけど その形だと粒度が整ってなくてキモチワルイ
769 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:11:30.54 ] >>764 ただの言葉遊びなら他所でやってくれないか
770 名前:764 mailto:sage [2012/02/19(日) 19:13:39.26 ] >>766 ただの言葉遊びなら他所でやってくれないか?
771 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:13:45.77 ] スコープを広げたくなければ関数冒頭で定義しましょう function hoge() { function ○○() { ・・・長いコード・・・ } function △△(value) { ・・・長いコード・・・ } function □□(value) { ・・・長いコード・・・ } var ret1 = ○○(); var ret2 = △△(ret1); var ret3 = □□(ret3); }
772 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:16:15.72 ] 出てきた中なら >>760 か>>771 か>>771 の上下逆順 あたりがいいな
773 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:16:53.14 ] hoge関数が長いことが気持ち悪いならこうしましょう。 先程の例には即時関数はなくなってましたが、ここで即時関数復活です。 var hoge = (function() { function ○○() { ・・・長いコード・・・ } function △△(value) { ・・・長いコード・・・ } function □□(value) { ・・・長いコード・・・ } return function () { var ret1 = ○○(); var ret2 = △△(ret1); var ret3 = □□(ret3); } }());
774 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:16:59.14 ] Javascriptのブロックって他の言語のブロックのように扱えないだろ スコープに過ぎないものをファーストオブジェクトである関数と比較する時点で 何かおかしいな
775 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:18:48.83 ] (function(){})() より {} の方が楽だろ?returnが使いたい時は関数がいいが (function(){ "use strict"; })() とかのスコープだけなら{}でいい
776 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:19:28.91 ] >>773 上までのサンプルとhogeの位置違う
777 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:22:18.35 ] ここまで来るとオブジェクトに変更することも簡単ですね? var HOGE = (function() { function ○○() { ・・・長いコード・・・ } function △△(value) { ・・・長いコード・・・ } function □□(value) { ・・・長いコード・・・ } function process() { var ret1 = ○○(); var ret2 = △△(ret1); var ret3 = □□(ret3); } return { process: process } }()); HOGE.process();
778 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:24:57.26 ] オブジェクトだから他に拡張もできます。 var HOGE = (function() { var state = 1; //ローカル変数です function ○○() { ・・・長いコード・・・ } function △△(value) { ・・・長いコード・・・ } function □□(value) { ・・・長いコード・・・ } function process() { var ret1 = ○○(); var ret2 = △△(ret1); var ret3 = □□(ret3); } function getState() { return state; } return { process: process, getState: getState, tag: 123 //オブジェクトなので単なる値も保持できます } }());
779 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:26:56.03 ] このように即時関数があると、 ただの関数からオブジェクトまでの拡張が 段階的にスムーズに容易に行えます。
780 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:27:50.70 ] バカ相手にこんなに丁寧に説明してやること無いのにw
781 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:28:41.50 ] その一方、クラスベース言語ではメソッド引き上げとアクセシビリティ変更だけで済むのであった
782 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:28:48.17 ] ちなみに、「JavaScriptパターン」の 5.4 モジュールパターン で 解説されていることはこんな内容です。
783 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:32:30.96 ] var ret = hogehoge_value + 1; で問題ない
784 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:32:48.90 ] >>781 いいたいのは、即時関数が本来あるべき姿で、 ブロックはその亜流であるということ 引数や戻り値の概念がない時点で、即時関数の劣化版。
785 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:33:56.99 ] >>784 だから>>774 なんじゃないかと書いたのだが
786 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:36:10.42 ] ブロックを使いたい時ってのは、 本当は関数を使いたい時なんだよね。 それができない、または関数にすると 大袈裟になりすぎるから、ブロックで代用するだけで。 ちっちゃい関数? ブロックで代用? だめだめ、ちっちゃい関数は、その場に ちっちゃい関数として埋め込こもう! 大きくなったら、そのときに少しづつ変更する。 それができるのがJavaScript
787 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:39:05.95 ] 大は小を兼ねる、が常にいいわけじゃないだろ ブロックスコープを目的にしてるんなら、ブロックスコープで書かれた方がシンプルで見やすく書きやすい上にその意図も伝わる
788 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:43:25.85 ] ブロックスコープを使いたいだけってことはあまりない。 普通は、ブロックに対して何かの引数を渡して、 ブロックを抜けた時に何かの値が変わる。 だけど、ブロックではその引数と戻り値が明確にはならない。 その意図が伝わらない。
789 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:49:01.10 ] if, for, while 内はブロックスコープ欲しいけどな。
790 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:50:44.88 ] ブロックスコープを使いたいときに、引数と戻り値という概念の出番はないよ 前提に結論先取りの我田引水してたらそりゃ結論は変わらんよ
791 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:50:50.47 ] いやだからw 今、全てのライブラリで>>775 が使われてるからw 信者はこれだからめんどくさいw 無名関数否定なんか初めから誰もしてないだろw
792 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 19:55:22.67 ] jQueryを見たがこうなってるぞ (function( window, undefined ) { })( window );
793 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 20:27:55.45 ] >ブロックスコープを使いたいときに、引数と戻り値という概念の出番はないよ 老害。
794 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 20:30:06.19 ] >>793 痴呆のエースさんちーす
795 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 20:32:44.92 ] >>794 ちーす
796 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 20:38:34.08 ] >>795 前みたいなキレのあるボケまた見せてくださいよ
797 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 20:44:40.93 ] ブロックスコープの有用性は誰も否定していない ブロックスコープがなく即時関数を使うことの是非が問われてるんだろ それを仕様というか、バッドノウハウというかは個人の好き嫌いだから結論が出るはずがない 俺としてはあるがままを受け入れられず、バッドノウハウ呼ばわりする人はこのスレにいる必要はないと思うがな
798 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:02:22.53 ] 敬虔な信者以外は去れ!
799 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:10:45.00 ] ブロックスコープとか無い物ねだりしても仕方がない
800 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:12:43.04 ] JavaScript では何もかもオブジェクトなのを忘れんな。 基本型にオブジェクトを用意してるのも体裁の為。 関数のスコープも実体は (内部的な) Call オブジェクト。 正規表現も、日付も、配列も、必要なくても皆オブジェクト。 だからブロックスコープなんて言い出す輩は悔い改めると良いよ。
801 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:15:51.68 ] とんでも理論入りました!さすが先輩
802 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:17:49.98 ] >>800 最終行だけ理解不能なのだが…。
803 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:27:48.06 ] JavaScriptではブロックスコープを (function() { }()) と書くだけ文字数が長い以外のデメリットはないよ。
804 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:28:47.55 ] ちょっと荒れてるみたいだけど疑問に思ったから流れを読まず質問 C++とかだと、whileループの内側のスコープに一時利用変数を宣言して そのループ内からしかアクセスできないようにできるよね? こういう一時変数はJSだとwhileの内外でスコープが同じだからできない 再帰関数でスコープを作る方法で機能的には代用できるけど 末尾再帰の最適化が保証されてないからwhile文より遅くなる ……っていう話がJSのブロックとスコープへの批判だと思ってたんだが違うの? 俺の勘違いかも知れないからできれば間違ってるところを教えてほしい
805 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:32:51.15 ] >>804 間違ってるのは、入信してないところかな
806 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:33:45.79 ] >>803 それでwhileループを書いてみてくれないか
807 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:42:56.75 ] >>806 こ、こうかしら…。 while (function(repeat) { if (some_condition) repeat = false; return repeat; }(true)) { }
808 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 21:46:55.64 ] 俺の腹筋返せw
809 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:22:23.56 ] うぉおお、スコープの理解が完全に間違ってたことが判明した!! ifやwhileはローカルスコープあると思ってたあああ 道理でイミフな謎のバグがでるわけだorz
810 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:23:02.92 ] for (i=0;i < 10;i++)(function (num) { })(i); そう言えばこんな風に書く人は本スレにいたね
811 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:26:29.95 ] JSとか最近触ったけど可読性がクソということだけは理解できた
812 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:27:53.56 ] >>811 それはない
813 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:29:28.52 ] >>810 ものっそい低速になりそうだな
814 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:31:36.69 ] >>809 普通に書いていれば、ローカルスコープの内外の 変数名を一緒にしたりしないから問題が起きたことがないな。 >>810 それはクロージャーを作る必要があるから そうしていただけ。
815 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:32:02.99 ] ループは普通にループで書けばよろしい。
816 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:35:15.23 ] >>807 がじわじわくるw
817 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 22:43:18.11 ] >>806 > それでwhileループを書いてみてくれないか じゃあここらで模範解答 while (condition) { ・・・ } これでよい。 即時関数使ってないって? それ必要なの? 俺は必要になったことがないけど、もし本当に必要ならこうすれば良い。 これはどうしても使えといったから使っただけで、俺なら使わん。 (function() { while (condition) { ・・・ } }())
818 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:24:25.98 ] >>797 こっちこそ老害。 今そうなっているからそれでいいのだと主張してる。
819 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:26:29.10 ] ろう がい らう― 0【老害】 企業や政治の指導者層の高齢化が進み,円滑な世代の交代が行われず,組織の若返りがはばまれる状態。 DAIJIRIN Third Edition
820 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:39:33.71 ] >>652 > 今そうなっているからそれでいいのだと主張してる。 そんなことは主張してない 仕様は常に更新されるべきだ
821 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:45:47.21 ] >>818 代替手段のない即時関数をバッドノウハウ扱いする理想主義的意見が否定されてるんじゃないの?
822 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:49:00.32 ] >>821 代替手段あるだろw おまえは>>817 で書くのか
823 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:53:37.90 ] >>817 は、周回ごとのスコープはできていない。
824 名前:デフォルトの名無しさん mailto:sage [2012/02/19(日) 23:55:22.00 ] 周回ごとのスコープ作ったら駄目だろw
825 名前:821 mailto:sage [2012/02/20(月) 00:00:08.25 ] >>822 ごめん、わかりにくい書き方だった 件の主はブロックスコープの代替手段として提案された即時関数がバッドノウハウと主張してる ES5には関数スコープしかないんだから関数スコープで代替するしかないのに「ブロックスコープを使うべき、即時関数はバッドノウハウだ」と主張してる 彼の中では関数スコープ自体が受け入れられないんだと思うよ そんなに嫌ならこんなところで主張してないでES.nextで策定予定のletがちゃんと定義されるように議論に参加すればいいのにね
826 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:06:46.79 ] >>824 え?ブロックスコープのある言語では周回ごとのスコープになるやん。
827 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:10:07.05 ] 彼はバッドノウハウの意味わかってるのかな? 即時関数がバッドノウハウなら即時関数に代わるグッドノウハウがなくてはならない 全部が全部バッドノウハウならそれはもうノウハウの問題じゃない
828 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:18:08.41 ] いや別に本当はああ書きたい/書けるべきなのに、現状代替案としてこう書かざるを得ない というのを指してバッドノウハウという表現は、おかしくはないと思うけど
829 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:18:12.74 ] >>826 その論拠は?
830 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:33:27.13 ] >【bad know-how】ソフトウェアなどを使いこなすために、ストレスを感じながらも >しぶしぶ覚えなければならないようなノウハウ。高林哲による造語。氏によると、 >バッドノウハウは、複雑な設定を「奥が深い」として有難がってしまうマニア独特 >の感性によってはびこるという。 これだとちょっと違う気がするな。 >バッドノウハウは、ソフトウェアの複雑怪奇な仕様が歴史的に引き ずられ、根本 >的な改善は行われないまま、そのノウハウが文書によっ て受け継がれることに >よって蓄積が進行する。 これだとまさにバッドノウハウ。 ただ、let使うのはなんか気が進まない
831 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:34:32.39 ] >>823 > >>817 は、周回ごとのスコープはできていない。 ん? ブロックスコープがある言語の場合、 while(cond) { int a=0; b++; } aはwhileの中に閉じ込められて、 bはwhileの外を参照するよね? (function() { var a=0; //同じだよね? while (condition) { //var a=0; //ここでやってもいい b++; //同じくスコープの外 ・・・ } }())
832 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:35:53.30 ] >>829 論拠?試してみれば?
833 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:40:46.11 ] (function() { while (condition) { var a=0; //こっちしかダメだったねw b++; //同じくスコープの外 ・・・ } }())
834 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:41:43.02 ] >>831 それは流石にピントズレてるだろ >>810 >>814 に答え書いてあるだろ
835 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:42:11.59 ] >>832 ゴマかすなよw
836 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:42:37.97 ] (function() { var i=0; //こっちのパターンと勘違いしたw for (var i=0; i<length; i++) { var a=0; b++; ・・・ } }())
837 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:42:50.32 ] >>831 前者の場合、変数 a は、(記号は同じでも) 周回ごとに異なる変数。 >>833 JavaScripit の場合、var a は while の内でも外でも同じ。 >>835 え?
838 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:43:18.56 ] >>834 なぜ?
839 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:44:52.00 ] >>837 > >>833 > JavaScripit の場合、var a は while の内でも外でも同じ。 うん、でも重要な点はvarの位置ではなく、 1.var aのスコープは閉じており、 2.ループの最初で0を代入しているから 実質同じ事になっているとこうこと
840 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:46:56.18 ] >>839 それはこの場合の本質には関係ない
841 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:47:48.54 ] >>832 Javascriptの<ような>言語じゃなきゃ 周回ごとにスコープ出来てるか否かという概念自体がなりたたないだろ
842 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:47:57.94 ] >>840 お前の本質とは、 全く同じ動きをして 代替として使えること以上に 重要なことなのか?
843 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:49:11.23 ] >>842 クロージャ。コレでわからなきゃ半年ROMってろ
844 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:49:20.53 ] >>839 ブロックスコープのある言語だと、while 内で宣言した変数は、 (参照を格納しておくのでもない限り) 別の周回で参照できない、 という意味で >>823 、>>826 。
845 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:50:58.51 ] >>843 即時関数も、クロージャーなんだけどw 無名クロージャーを定義と共にすぐに実行することを 即時関数(パターン)と読んでるだけ
846 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:51:40.29 ] >>845 それと>>839 のどこに関係があるんだ
847 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:52:46.52 ] >>844 うん。だから最初に値を初期化することまで含めて 「 (function(){}())と初期化 」を使った ブロックの実装例だよ。
848 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:53:38.60 ] >>846 馬鹿? (function() { }()) ↑これが無名クロージャの即時実行
849 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:54:03.37 ] >>844 そうじゃない言語もあるよね
850 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:54:27.24 ] C言語か?
851 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:54:32.56 ] >>848 話つながってないことに気づけよ
852 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:56:35.68 ] >>851 勝手に切るな。 どこから別の話なんだよw
853 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:56:36.09 ] クロージャっていまだによくわからん これって無効には出来ないの?
854 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:57:02.92 ] 今まさに、バッドノウハウが生み出されている、その瞬間であります!!
855 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:57:25.80 ] >>853 関数の外に持っていけばいいよw
856 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:58:09.23 ] ちなみに即時関数は オライリー本のJavaScriptによるでも 紹介されている、グッドノウハウです。
857 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 00:59:29.77 ] オライリー本に紹介されるとグッドノウハウになるそうです\(^o^)/
858 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:00:40.05 ] オライリー本にはバッドパーツとして 紹介されているものもありますよ。 即時関数はもちろんグッドですがw
859 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:02:41.34 ] >>844 具体的に何の言語か教えて欲しい >>817 周回スコープが出来てない事が指摘されてるのにクロージャとか関係ない話を続けているのはなぜ?
860 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:02:51.61 ] >>856 >>830 下の典型例
861 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:02:54.35 ] >>858 おまえは何もわかってない バッドノウハウとは、使い方の問題なんだよ 存在の良し悪しじゃないんだ
862 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:05:50.26 ] >>859 クロージャにスコープは関係ありありだろ ちなみに俺は817とかじゃないが
863 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:08:02.57 ] >>858 どの本です? www.amazon.co.jp/s/ref=nb_sb_noss?__mk_ja_JP=%83J%83%5E%83J%83i&url=search-alias%3Dstripbooks&field-keywords=JavaScript%82%C9%82%E6%82%E9&x=6&y=16
864 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:08:52.00 ] >>859 843 名前:デフォルトの名無しさん[sage] 投稿日:2012/02/20(月) 00:49:11.23 >>842 クロージャ。コレでわからなきゃ半年ROMってろ
865 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:09:44.48 ] >>863 www.amazon.co.jp/dp/4873114888
866 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:18:41.61 ] ほかの言語じゃあまり見られないような議論だな やっぱり自由度が高いからか。
867 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:20:27.91 ] >>862 関係ないとはいわんが、前進してないだろう >>834 で「>>810 で答えが出てる」と指摘を受けておきながら「クロージャだ、即時関数だ」と言葉遊びを続ける理由がわからん
868 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:22:46.10 ] >>834 =>>862 なんだが。。。
869 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:24:48.10 ] >>810 はwhileじゃないじゃん。
870 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:28:23.38 ] whileを>>810 っぽく書こうとするとこうなるな。 (function() { var condition; while(condition) (function() { condition = ?; // 条件書き換え })(); })();
871 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:29:40.77 ] 俺が整理してやるよ Javascriptでスコープいったらクロージャは無視出来ない ここまではいいだろ? で >>807 wwでは毎回クロージャが作られる >>831 では毎回クロージャが作られない そこが周回ごとにスコープ出来てない、言われてるんだろ
872 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:30:03.57 ] >>868 それはすまんかった >>839- から続く不毛な議論に終止符を打ちたかったんだが、途中から入ると難しいな… >>869 while でも出来る
873 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:30:43.17 ] >>872 > while でも出来る じゃあ、実際にやってみ。 ?って思うぞ。
874 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:32:32.98 ] >>871 > >>807 wwでは毎回クロージャが作られる お前根本的なところがわかってないんじゃないか? >>807 はループになってない。
875 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:33:07.20 ] >>871 > >>807 wwでは毎回クロージャが作られる ちょwおまwww
876 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:33:13.29 ] >>807 のクロージャーの部分は whileの( 条件 ) だ。
877 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:37:04.76 ] >>873 var i = 0; while (i < 10) (function (i) { console.log(i++); }(i));
878 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:37:26.72 ] whileにクロージャーを使えというレスに 対するボケを見抜けない人は辛いなw
879 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:38:45.15 ] >>877 想定通り、無限ループやっちゃったねw
880 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:40:58.13 ] ねぇねぇ 今どんな気持ち? ∩___∩ ∩___∩ ♪ | ノ ⌒ ⌒ヽハッ __ _,, -ー ,, ハッ / ⌒ ⌒ 丶| / (●) (●) ハッ (/ "つ`..,: ハッ (●) (●) 丶 | ( _●_) ミ :/ :::::i:. ミ (_●_ ) | ___ 彡 |∪| ミ :i ─::!,, ミ、 |∪| 、彡____ ねぇ今どんな気持ち? ヽ___ ヽノ、`\ ヽ.....::::::::: ::::ij(_::● / ヽノ ___/ ねぇねぇったらー / /ヽ < r " .r ミノ~. 〉 /\ 丶 / /  ̄ :|::|>>877 ::::| :::i ゚。  ̄♪ \ 丶 / / ♪ :|::| ::::| :::|: \ 丶 (_ ⌒丶... :` | ::::| :::|_: /⌒_) | /ヽ }. :.,' ::( :::} } ヘ / し )). ::i `.-‐" J´(( ソ トントン ソ トントン
881 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:41:44.01 ] 0 0 0 0 0 0 0 0 0 0 0 0 0
882 名前:877 mailto:sage [2012/02/20(月) 01:47:11.21 ] そういうことか var i = 0; while (i < 10) i = (function (i) { console.log(i++); return i; }(i));
883 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:47:49.11 ] (function(){ var i = 0; while (i++ < 10) (function (i) { console.log(i); }(i)); }());
884 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:49:30.70 ] >>882 iがスコープに閉じてない。
885 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:49:56.89 ] var i = 0; while (i++ < 10) (function () { console.log(i); }()); こうだろwww
886 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:50:31.07 ] リロードしろとあれだけ(ry
887 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:52:35.57 ] で話は>>831 という最終形態に戻る。 普通はこれでいいし、 var i=0; while(i<10) { console.log(i++); } どうしてもというのなら、 (function() { var i=0; while (i<10) { console.log(i++); } }()) これだけでいい。へんなコード書くな。
888 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:54:07.31 ] >>887 だから、それだとスコープが毎回できないだろ 毎回スコープを作るのがお題なんだから そのお題の理由はわからんけどw
889 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:55:01.25 ] 結局のところ、>>800 が正しいならむしろES.nextのletがバッドノウハウになる気がするんだがそこんとこどうよ?
890 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 01:56:45.03 ] whileとかどうせループの最初で変数初期化するんだから これでいいが (function() { var i=0; while (i<10) { var j=0, k=0; ・・・ } }()) 変数初期化サボるとかどうしてもやりたいのなら (function() { var i; while (i<10) {(function() { var j, k; ・・・ }())} }()) こう書けば? { ・・・ } が JavaScriptでは (function() { ・・・ }()) に なるってだけの話をいつまで続けてるんだ?
891 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 02:01:51.13 ] >>884 そこまで求めるのか while 文の体裁を崩して条件式に関数を入れないと無理だと思うのだが
892 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 02:09:23.12 ] すごく変態です……ってことだろ 少なくともブロックスコープさえあれば自然に書ける(C++派) あるいは末尾再帰が最適化されるなら開き直って全部再帰で書ける(Scheme派) letがなくてどっちもできない現状のJavaScriptは中途半端だなって気はする つーかブロックスコープなんていらんから末尾再帰の最適化しろと言いたい
893 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 08:57:39.20 ] >>885 のは無意味 (function() { var i=0; while (i++ < 10) (function (n) { console.log(i++); })(i); }()); これと (function() { var i=0; while (i<10) { console.log(i++); } }()); これじゃ意味が違うだろ
894 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 08:58:16.95 ] 上の方のconsole.log(i++)はnに置き換えてねw
895 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 10:32:13.71 ] while(i ? i < 10 : (i = 0, true)) (function(i) { console.log(i) })(i++)
896 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 11:53:50.87 ] Javascriptは、条件式の部分で変数宣言ができないから、 条件式まで含めなくても実用上は困らないと思う。
897 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 15:04:50.75 ] >>889 es6はlet定義しかないけど (function() { let x = 10; {let x = x + 20; console.log(x)}})() //->NaN (function() { let x = 10; let x2 = x + 20; console.log(x2)})()//->30 (function() { let x = 10; {let( x = x + 20)console.log(x)}})() //->30 を理解してりゃ問題ないと思う。 letでブロックスコープになると思ってるのが間違い。 >>800 の言いたいことは多分こういうのだと思う。
898 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:21:27.95 ] >>889 >>800 は正しくない。 全てObjectなんて言えるのはSmalltalkみたいに 制御文の中のbodyもObjectにできるような言語。 Javascriptは、Schmeに多くを担いながら、 Cのsyntaxを使い、なおかついろいろと削ぎ落してブラウザ向けに軽量にした言語。 ECMAScriptの仕様的にも”primitive value"は"Object"ではない。
899 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:23:21.85 ] 意識しないうちにboxing/unboxingをするんだっけか
900 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:31:02.68 ] >>892 Schemeは、letに関しては、 ラムダ式さえあれば、letも簡単に実現できる。(当時はBLOCKマクロ) 意味論的にも問題ないし、コンパイラもシンプルになる。"RABBIT: A Compiler for SCHEME" けどプログラム書く時に不便だからletは言語仕様に入れようね派。"RnRS"
901 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:45:36.88 ] ちなみに、Brendan Eichは、Javascript(Mocha, Livescript)を設計した時に、 "RABBIT: A Compiler for SCHEME"にもろに影響を受けて、 言語を小さくするためletは導入しない決定をしたと思われる。 Schemeを実装する予定でNetscape社に入ったと後に語っているので。 ただ「小さくする」制約が、今では全く無意味になったので、 EichはECMAScript仕様策定ではかなり盛り込む派に立っている。 moduleも付け加えたほうがいいと考えている。 けどそれは現在のWebの世界を尊重して慎重にやらないといけないという立場。 だからHarmonyを仕切ってES4を一旦白紙に戻した。 けど捨てたわけじゃなくて個別の項目について継続審議中。
902 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 17:49:31.65 ] letは、lambdaを使うマクロとして実装することもできるけど、プリミティブとして実装すると、 作ったらすぐその場で適用する関数として、最適化できるんだよな確か。
903 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 18:24:48.37 ] let式じゃなくてlet文なら持ち運ばれる可能性ないからね。 エスケープ解析しなくてもクロージャ生成を端折れる。
904 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 21:28:25.03 ] javascriptって結局lispのパクリemacsのパクリなんだろ もうjavascript廃止してlispを標準にしろよ
905 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 22:11:25.64 ] ブラウザ標準スクリプト言語として? 妄想は他の人の目に付かないところでやってくれ
906 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 22:31:42.97 ] 見た目がC言語っぽくないと拒絶しちゃう人がいかに多いかわかってないだろ >>904
907 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:09:13.62 ] まあ、ブロックスコープがないC言語でも UnixやLinuxが作れるように、合ったら便利だけど 無くても問題ないものなんだろうね。 関数にしておけばいいだけなわけだし。
908 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:18:17.08 ] > ブロックスコープがないC言語 > ブロックスコープがないC言語 > ブロックスコープがないC言語
909 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:27:47.91 ] 早速一匹釣れたかw
910 名前:1/2 mailto:sage [2012/02/20(月) 23:27:57.98 ] そもそもCはオブジェクト指向じゃない。その上、for文にブロック変数が作れるよ。ミスリー? スコープが簡単に作れないってのはJavaScriptが根本に抱えてる問題の一つだよ 現実から目を背けたって意味ない
911 名前:2/2 mailto:sage [2012/02/20(月) 23:30:19.23 ] JavaScriptは 他のオブジェクト指向言語のように直感的にブロックでスコープが作れないし (ex.ループ内にスコープを作ろうとするだけで複雑なコードになる) Function objectでスコープ作れるけど、Lisp/Schemeほどの便利さはない (ex.末尾再帰最適化されない、高階関数が簡単にはできない)
912 名前:デフォルトの名無しさん mailto:sage [2012/02/20(月) 23:55:05.01 ] いや、高階関数は結構得意。 Javascriptの特徴といっていいくらい。 設計時にクロージャを導入する決断をしたのは素晴らしい。 Schemeと一緒で部分適用は苦手。(ML, Haskellは得意)
913 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:03:31.16 ] 玄人向きの機能が無駄に充実してるのに基本的な機能が足りない でもそんなところが可愛いよJavaScript
914 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 00:20:58.15 ] 釣り人が足滑らせて溺れながら「釣れたか」とか言ってる?
915 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 03:24:10.03 ] >>903 var x = eval("let (x = 20) { x }") これで簡単に外に漏れる。 var xの実行コンテキストがGlobalならCallがメモリリークするのと同じ問題が起きる。
916 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 08:43:22.34 ] evalはバッドノウハウだから どうでもいい。
917 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 10:17:16.82 ] 次のテンプレ案これでどうかな。 【言語設計】JavaScriptスレ 2.0【限定】 言語としてのJavaScriptに関する議論のスレです。 Web製作におけるJavaScriptの質問はWeb製作板へ。
918 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 10:37:29.46 ] せっかくのホイホイスレなんだから限定にすんなよ
919 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 10:53:08.81 ] 次スレイラネ ECMAScriptスレで必要充分だろ
920 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 13:22:20.88 ] 無いと分かってない奴が立てるんじゃないかな。このスレみたいに。
921 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 13:28:03.39 ] 立てなくてもいいからdartスレのバカどもをちゃんと引き取ってくれよ
922 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 13:55:52.87 ] おまえが誘導しろよ
923 名前:デフォルトの名無しさん [2012/02/21(火) 15:21:48.40 ] 2ちゃんねるはオワコン 質問サイトに移行したほうが俺らのため
924 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 16:00:52.24 ] 質問サイトもいいかげんオワコンだろがw はてなはあいかわらずのはてなクオリティだし、他のサービスはほとんどの回答者がハズレ回答者だし。
925 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 20:40:17.66 ] dartは別スレでいいだろ
926 名前:デフォルトの名無しさん [2012/02/21(火) 21:32:28.60 ] 連想配列をキーそのものでソートする方法を教えてください
927 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 22:31:52.58 ] 連想配列はソートできませんので連想配列のキーをソートしてください。
928 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 22:47:05.49 ] javascrpitを使って、skypeのチャットのようなことをブラウザでやりたいのですが可能でしょうか? サーバからの要求を受ける機能があるかどうかというところだとは思っているのですが
929 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 22:52:47.17 ] >>928 Ajaxで検索
930 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:01:45.08 ] >>929 早い返信ありがとうございます www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter02/001/index.html ↑ググってすぐに見つかった、ここをとりあえず見てました。 ざっと読んだ感じ、同期を取ることがJSでは不可能なため、setIntervalなどを使っていくしかないという認識でよいでしょうか?
931 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:07:09.36 ] Push自体は無理なので 定期的なポーリングによるPushもどきになるのは仕方ない
932 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:14:36.15 ] なるほど、やはりそうなりますよね 私はチャットのデータをMySqlで管理したく思っているのですが、 とすると、数秒起きに最新何十件のチャットを読み込みにいくということになりそうですね。 あとはどのようにレスポンスをあげていくか頑張ってみます。 ありがとうございました
933 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:35:17.53 ] >>932 「何かあるまで応答を返さない」 という手もあるぞ
934 名前:デフォルトの名無しさん mailto:sage [2012/02/21(火) 23:38:33.57 ] ローカルストレージはブラウザによって作法が違うのでよく調べたほうが良い。 今後はHTML5 client-side database storageに集約されていくのだろうが。
935 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 00:15:40.04 ] pushが無理とかHTML4時代の人間ばかりだなw
936 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 00:24:19.87 ] スレがすげー伸びてるw >>727 >>725 が言っているのは、 var foo = function foo() {} function foo() {} と全く同じ意味だから前者は無駄ってことなんじゃ?
937 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 00:53:58.05 ] >>930 よろしくありません ピント:ggrks
938 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 01:59:31.06 ] >>935 >>937 まぁそう言わずに、勉強する気はありますので、せめて何という技術かくらいは教えていただけませんか
939 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 02:41:36.40 ] >>936 どっちかと言えば var foo = function(){}; と同じと言いたかった。 fooを二度書く意味あんのかよと。格好悪いし。
940 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 03:19:41.23 ] >>939 同じじゃないよ nameとスコープと変数の実体化に影響する
941 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 03:23:04.22 ] >>936 スタイルで書いてると(必ずしも同じ名前である必要はない) 幸せになれるよ
942 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 09:18:42.72 ] >>936 ,939 var f = function (){};console.log(f.name); var f = function hoge(){};console.log(f.name); var f = function hoge(){},b = f;console.log(b.name); この3つ実行すりゃ違いわかるよ
943 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 11:08:36.16 ] >>941 後者で書いてると幸せになるの?
944 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 11:27:48.11 ] >>938 横レスだけど、HTML5前提でよければ、WebSocketという技術がある 詳しくは、WikipediaなりGoogleで調べてちょ
945 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 11:32:34.23 ] (>>944 の補足) WebチャットなりWebSocket技術はWebブラウザ前提の話題だから、 もし続きの質問がしたいのであれば、このスレよりも WebProg板のHTML5スレのほうが期待するレスをもらえると思う
946 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 11:36:43.74 ] こういうプッシュとかを使う物って、その間ずっとセッションを残してる訳だろ? サーバ側が対応してないと実際使用するのは難しい
947 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 11:49:04.39 ] WebSocketは(socketという名前が示すように)双方向通信技術であって、 プッシュ技術ではないし、さらにはサーバ側の対応は(最初から)必須
948 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 14:33:11.47 ] >>939 それは違う。>>936 の2つとは違う。 >>942 >>936 の2つは同じ。
949 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 16:20:31.58 ] >>948 var f = function hoge () { console.log(hoge); }; console.log(hoge); まぁ両方fooだから同じとも言えるけど
950 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 16:59:58.57 ] var foo = function foo() { alert(foo) } var bar = foo; foo = undefined; bar(); // IE以外で動作 これならarguments.calleeで良い気がするけど、 他にメリットあるんだろうか。
951 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 17:02:02.86 ] function expressionのnameはbody内で有効な識別子に過ぎないから当たり前。 再起その他、自己参照のある関数用。
952 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 20:58:44.24 ] >>944-947 遅くなりましたが返信ありがとうございます HTML5対応ブラウザはWebSocket、未対応ブラウザはsetIntervalで動くように試してみたいと思います さっそく勉強に入ります これから作るぞーという今の気持ちが一番楽しくていいですね
953 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 22:30:45.66 ] arguments.calleeは使ったらダメ
954 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 22:31:31.36 ] で、最終的にはアレを使えばいいから 作らなくてよくなるんだよなw
955 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 23:07:51.56 ] アレってなんだよ websocketはサーバー側が対応してないとどうにもならんしポーリングはラグるしcommetは接続数たらんくなるしなので同期はやるだけの価値がないというのが俺の結論
956 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 23:41:02.25 ] サーバーは対応してるの使えばいいだけ
957 名前:デフォルトの名無しさん mailto:sage [2012/02/22(水) 23:42:07.70 ] >>955 やるだけの価値がない理由が 技術的制限の話しかでてないぞ。 価値というのはそれを使うユーザーが 必要かどうかだろ。
958 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 00:37:20.11 ] >>953 なんで?
959 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 04:33:02.14 ] >>953 これを見て思い出したけども、 そういや何でES5でarguments.calleeって使えなくなるの? もともと自分自身への参照がargumentsの中にあるのは違和感があったけど。
960 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 09:51:34.43 ] >>958-959 togetter.com/li/215907
961 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 09:56:02.34 ] 本来callerとかcalleeとか、スタックフレームから参照するはずのものを、 関数オブジェクト経由で参照するとか、設計が変だったからな、あれ。
962 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 11:52:37.38 ] >>961 arguments.caller: call site依存 (要はスタックフレームへの参照) arguments.callee: 自分のことだからセルフリファレンスがちゃんと定義されれば必要ない。
963 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 12:20:55.93 ] callerが危険だから廃止なのは分かる。 calleeはargumentsにぶら下げるのが不恰好だから廃止って感じなのか。
964 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 12:39:51.85 ] argumentsは動的に決まるのに、calleeは参照場所で静的に決まってるからね。 あまりいい整理の仕方じゃなかったね。
965 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 13:34:12.67 ] 関数名は__FUNC__で取得できるようにすれば良い。
966 名前:デフォルトの名無しさん mailto:sage [2012/02/23(木) 13:49:03.73 ] WMIをつかうとき、取得結果をEnumeratorに食わせなければいけない 理由をおしえてください。
967 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 00:24:37.57 ] WMIのメソッドがコレクションを返すから
968 名前:デフォルトの名無しさん mailto:sage [2012/02/25(土) 11:33:13.91 ] コレクションは直接見れないの?