のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,844人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ+ JavaScript の質問用スレッド vol.108 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    751 : Name_Not - 2013/09/18(水) 08:25:58.55 ID:??? (+57,+29,-46)
    その真のクロージャとか言ってる実装は、GCの関係で使い物にならんだろうな
    752 : Name_Not - 2013/09/18(水) 08:33:57.36 ID:??? (-1,-29,-47)
    英語Wikipediaの定義がまっとうなんだと思うが。
    http://en.wikipedia.org/wiki/Closure_(computer_science)
    753 : Name_Not - 2013/09/18(水) 10:08:03.38 ID:??? (+42,-30,-42)
    >>747
    >最近のエンジンは必要な変数しかコンテキストに付加しない

    へーへー

    var a = b = 0;
    function f(){ alert(a); }

    こうした時、f では b は使われない、みたいな感じでしょうか
    754 : Name_Not - 2013/09/18(水) 10:13:37.57 ID:??? (+55,+26,-2)
    >>753
    そのbは何だよw
    755 : Name_Not - 2013/09/18(水) 10:35:20.59 ID:??? (+85,+29,-11)
    使わない変数を渡さないことでどんな不便があり得るの?
    756 : Name_Not - 2013/09/18(水) 10:36:44.81 ID:??? (+43,+25,-4)
    ないんじゃね?
    757 : Name_Not - 2013/09/18(水) 10:51:11.91 ID:??? (+57,+29,-2)
    じゃあ真のクロージャの意味ねーじゃん
    758 : Name_Not - 2013/09/18(水) 10:58:58.62 ID:??? (+57,+29,-42)
    クロージャにすれば100%静的スコープになるわけだが
    クロージャにしなくても100%見えてるわけじゃない
    みたいなことが言いたいのでは?
    759 : Name_Not - 2013/09/18(水) 11:28:29.49 ID:??? (+48,+20,-33)
    クロージャと動的スコープ変数は共存できるぞ
    760 : Name_Not - 2013/09/18(水) 11:54:34.97 ID:??? (+115,+29,-7)
    http://twitter.com/kyo_ago/status/380143189547438080
    あごっちが言ってるこれのサンプルを誰かください
    761 : Name_Not - 2013/09/18(水) 12:06:48.82 ID:??? (+0,-29,-9)
    >>745
    f(); // 1
    f(); // 2
    f(); // 3
    だろ
    762 : Name_Not - 2013/09/18(水) 12:15:42.86 ID:??? (+50,+27,-1)
    あああお察しください
    763 : Name_Not - 2013/09/18(水) 13:41:42.96 ID:??? (+3,-30,-95)
    var a = 0;

    var f = (function () {
      var a = 10;
      return function (c) { return eval(c); }
    }());

    console.log(f("a++;"));
    console.log(f("a++;"));
    console.log(f("a++;"));
    console.log(f("a++;"));
    764 : Name_Not - 2013/09/18(水) 14:36:54.69 ID:??? (+3,-30,+0)
    var a = 0, b = 5;
    eval('var c = 10;');

    var f = (function (code) {
    var a = 20;
    eval(code);
    f.self = this;
    return function (code) {
    return eval(code);
    }
    }('var d = 30;'));

    eval.call(f.self, 'var e = 40;');

    console.log(f('++a;')); // 21
    console.log(f('++b;')); // 6
    console.log(f('++c;')); // 11
    console.log(f('++d;')); // 31
    console.log(f('++e;')); // 41
    console.log(f('var f = 50;')); // undefined
    console.log(f('++f;')); // NaN or ReferenceError
    765 : Name_Not - 2013/09/18(水) 14:39:26.97 ID:??? (+82,+28,-15)
    ネストしている連想配列の指定キーの参照を得るにはどうしたらいいですか?
    766 : Name_Not - 2013/09/18(水) 14:42:47.48 ID:??? (-6,-29,-12)
    eval is evil
    767 : Name_Not - 2013/09/18(水) 14:47:43.45 ID:??? (+53,+14,-18)
    >>765
    連想配列のネストをたどるコードを書け
    768 : Name_Not - 2013/09/18(水) 14:48:10.18 ID:??? (+0,-28,-32)
    eはグローバルだしevalにcallしても意味ないしあれだったな
    769 : Name_Not - 2013/09/18(水) 14:51:30.19 ID:??? (+52,+29,-8)
    えばる?いーばる?
    770 : Name_Not - 2013/09/18(水) 15:08:18.09 ID:??? (-1,-29,-4)
    大発見をしました

    http://jsperf.com/var1-vs-var2

    var a;
    a = 100;

    の方が

    var a = 100;

    よりも速いです
    何故ですか?
    771 : Name_Not - 2013/09/18(水) 15:13:00.87 ID:??? (+57,+29,-4)
    どうもサンプル数が少ない時の偏りだったようです
    772 : Name_Not - 2013/09/18(水) 15:15:29.73 ID:??? (+57,+29,-24)
    しかし宣言と代入を分けた方が遅くなりそうなものですが、そうはならないのは何故ですか?
    773 : Name_Not - 2013/09/18(水) 16:44:32.39 ID:??? (-3,-26,+0)
    JITで最適化されるからでしょ
    774 : Name_Not - 2013/09/18(水) 17:02:55.19 ID:??? (+55,+16,-38)
    >>755
    インライン関数がエラーで止まった時に上位スコープの変数確認できないから困る、
    775 : Name_Not - 2013/09/18(水) 17:24:03.19 ID:??? (+3,-30,-90)
    例えばこういうケースだとデバッガからaは確認できるけどbはできない

    function test1() {
    var a = 1, b = 2;
    var f = function () {
    throw 'test';
    a;
    }
    console.dir(f);
    f();
    }

    test1();
    ----console----
    <function scope>
    |
    Closure
    |
    a: 1
    776 : Name_Not - 2013/09/18(水) 17:24:47.90 ID:??? (+3,-30,-94)
    ちなみにこれだとこうなる

    function test2() {
    var a = 1, b = 2;
    var f = function () {
    throw 'test';
    eval('');
    }
    console.dir(f);
    f();
    }

    test2();
    ----console----
    <function scope>
    |
    Closure
    |
    a: 1
    arguments: Arguments[0]
    b: 2
    f: function () {
    777 : Name_Not - 2013/09/18(水) 17:56:13.42 ID:??? (+38,-30,-102)
    いやおまえそれGoogle Chromeの開発ツールの機能だろw
    Firebugとかじゃそもそもconsole.dir(f)からClosureとか辿れないし、
    aとbの中身も見たいならconsole.log(a,b)しとけよw
    778 : Name_Not - 2013/09/18(水) 18:13:52.16 ID:??? (+57,+29,-26)
    表示されるか否かでデバッグのしやすさが段違いなんだが
    デバッグしたこと無いのか?
    779 : Name_Not - 2013/09/18(水) 18:21:25.48 ID:??? (+57,+29,-24)
    デバッグ便利ですとか言われても余分な参照をクロージャにずっと引きずられたら困る
    GCとか意識したコード書いたことないの?
    780 : Name_Not - 2013/09/18(水) 18:23:21.98 ID:??? (+72,+30,-147)
    >>777
    分かってもらえなかったか……
    console.dirはデバッガ使ったことない人でも表示がわかりやすいように入れただけで、
    あってもなくてもどうでもいい部分なんだよ…

    エラーで止まる設定にしたるとき
    いざエラーが起きても最適化のせいで満足に状況を調べられないから困るってこと

    あとChromeのデバッガはただV8のAPI叩いてるだけだからね
    このことはV8コミュに何度もissueが挙がってる有名な問題なんだよ
    でも根本的な仕組みの問題だから修正するのは難しい

    まあ踏み込んだ話もどうでもよくて
    言いたかったことはこれね>>747
    781 : Name_Not - 2013/09/18(水) 18:26:59.26 ID:??? (+47,+29,-4)
    本末転倒だな
    782 : Name_Not - 2013/09/18(水) 18:28:04.39 ID:??? (+57,+29,-30)
    最適化の問題じゃないよ?
    参照が切れた変数をデバッグのためにずっと維持しておけってこと?
    783 : Name_Not - 2013/09/18(水) 18:28:36.13 ID:??? (+57,+29,-45)
    別にこれが良いとか悪いとか言いたいんじゃなくて
    流れに沿った豆知識を書きたかっただけだからもう気にしないで
    784 : Name_Not - 2013/09/18(水) 18:31:12.83 ID:??? (+90,+29,-3)
    真のクロージャとか妙なこと言い出すからだろ
    785 : Name_Not - 2013/09/18(水) 18:36:44.91 ID:??? (+58,+29,-20)
    別にそこ突っ込むとこじゃないでしょ
    対比のための強調語として「真の~」って書きたくなるものでしょ
    そのくらい気持ちを組んでよ
    786 : Name_Not - 2013/09/18(水) 19:17:44.97 ID:??? (+75,+29,-12)
    対比のための強調語に「真の~」なんて使うやつは真の馬鹿だよ
    787 : Name_Not - 2013/09/18(水) 19:32:13.70 ID:??? (+57,+29,-20)
    真の~なんていう言葉は、真にそれ以外が偽者な場合か、
    そうではないけどあえて突っ込んでもらうために使うかどっちかにしとけよ。
    紛らわしい使い方すんな。
    788 : Name_Not - 2013/09/18(水) 19:36:19.92 ID:??? (+31,-30,+0)
    var idname = "v6";

    var a1 = document.getElementById(idname);
    var a2 = document.getElementById(idname);
    var a3 = document.getElementById(idname);
    var a4 = document.getElementById(idname);

    var i1 = setInterval(function(){a1.click();}, 1000);
    var i2 = setInterval(function(){a2.click();}, 1000);
    var i3 = setInterval(function(){a3.click();}, 1000);
    var i4 = setInterval(function(){a4.click();}, 1000);



    同じ要素を複数のintervalで自動クリックするやつなんですけど
    ここでは4つですが数は2個以上を想定してください
    これを修正してください
    789 : Name_Not - 2013/09/18(水) 19:47:39.00 ID:??? (+39,+11,+0)
    >786-787
    アスペ乙
    790 : Name_Not - 2013/09/18(水) 19:53:38.04 ID:??? (+37,+10,+0)
    >>788
    日本語が意味不明
    791 : Name_Not - 2013/09/18(水) 19:54:29.58 ID:??? (+7,-30,-54)
    >>788

    var idname = "v6";

    var elm = document.getElementById(idname);

    for (var i = 0, ivid = []; i < 4; ++i) {
    ivid[i] = setInterval(function () { elm.click(); }, 1000);
    }
    792 : Name_Not - 2013/09/18(水) 20:00:16.44 ID:??? (-1,-29,-6)
    複数のintervalとか言ってるんだから、intervalのリストが必要になるんじゃないか?
    793 : Name_Not - 2013/09/18(水) 20:05:57.67 ID:??? (+12,-15,-1)
    エスパーだが1秒ごとにクリックさせたいんだろう
    794 : Name_Not - 2013/09/18(水) 20:08:15.30 ID:??? (+57,+29,-10)
    同じくエスパーだが
    たぶん一定間隔じゃなくある程度ランダムな間隔でクリックしたいのだろう
    795 : Name_Not - 2013/09/18(水) 20:12:42.62 ID:??? (-2,-30,-42)
    こうじゃないのか

    for (var i = 0; i < 4; ++i) setTimeout(function () { elm.click(); }, 1000*i);
    796 : Name_Not - 2013/09/18(水) 20:21:40.51 ID:??? (+57,+29,-4)
    後で止める仕組みが必要なのかどうかも問題だ
    797 : Name_Not - 2013/09/18(水) 20:27:51.88 ID:??? (+47,+19,-33)
    元ソースから察するに要らないだろ
    ・i1、i2、i3、......単ローカル変数が何個あるか分からない
    こんなもの使えない、意味もなくつけてるだけ
    ・精々数秒間程度、そもそもキャンセルがいることは稀
    798 : Name_Not - 2013/09/18(水) 20:49:13.88 ID:??? (+57,+29,-4)
    エスパーだが何らかのゲームの自動操作を行いたいんだろう
    799 : Name_Not - 2013/09/18(水) 20:51:43.26 ID:??? (+35,-29,-36)
    1つのintervalで1秒1クリックさせたいんですよ
    そこでマルチスレッドぽく n数の分だけintervalを生成してそれぞれでクリックさせたいんですよ
    さっきのコードの場合だとマルチスレッドで1秒間に4回くりっくすることになります
    800 : Name_Not - 2013/09/18(水) 20:55:54.90 ID:??? (+59,+26,-12)
    >>799
    残念ながらJavaScriptでは、タイマーで呼び出される処理も含めて全部一つのスレッド上で実行される
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について