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

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    751 = :

    その真のクロージャとか言ってる実装は、GCの関係で使い物にならんだろうな

    753 = :

    >>747
    >最近のエンジンは必要な変数しかコンテキストに付加しない

    へーへー

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

    こうした時、f では b は使われない、みたいな感じでしょうか

    754 = :

    >>753
    そのbは何だよw

    755 = :

    使わない変数を渡さないことでどんな不便があり得るの?

    756 = :

    ないんじゃね?

    757 = :

    じゃあ真のクロージャの意味ねーじゃん

    759 = :

    クロージャと動的スコープ変数は共存できるぞ

    760 = :

    http://twitter.com/kyo_ago/status/380143189547438080
    あごっちが言ってるこれのサンプルを誰かください

    762 = :

    あああお察しください

    763 = :

    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 = :

    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 = :

    ネストしている連想配列の指定キーの参照を得るにはどうしたらいいですか?

    767 = :

    >>765
    連想配列のネストをたどるコードを書け

    769 = :

    えばる?いーばる?

    771 = :

    どうもサンプル数が少ない時の偏りだったようです

    772 = :

    しかし宣言と代入を分けた方が遅くなりそうなものですが、そうはならないのは何故ですか?

    774 = :

    >>755
    インライン関数がエラーで止まった時に上位スコープの変数確認できないから困る、

    775 = :

    例えばこういうケースだとデバッガから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 = :

    ちなみにこれだとこうなる

    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 = :

    いやおまえそれGoogle Chromeの開発ツールの機能だろw
    Firebugとかじゃそもそもconsole.dir(f)からClosureとか辿れないし、
    aとbの中身も見たいならconsole.log(a,b)しとけよw

    778 = :

    表示されるか否かでデバッグのしやすさが段違いなんだが
    デバッグしたこと無いのか?

    779 = :

    デバッグ便利ですとか言われても余分な参照をクロージャにずっと引きずられたら困る
    GCとか意識したコード書いたことないの?

    780 = :

    >>777
    分かってもらえなかったか……
    console.dirはデバッガ使ったことない人でも表示がわかりやすいように入れただけで、
    あってもなくてもどうでもいい部分なんだよ…

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

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

    まあ踏み込んだ話もどうでもよくて
    言いたかったことはこれね>>747

    781 = :

    本末転倒だな

    782 = :

    最適化の問題じゃないよ?
    参照が切れた変数をデバッグのためにずっと維持しておけってこと?

    783 = :

    別にこれが良いとか悪いとか言いたいんじゃなくて
    流れに沿った豆知識を書きたかっただけだからもう気にしないで

    784 = :

    真のクロージャとか妙なこと言い出すからだろ

    785 = :

    別にそこ突っ込むとこじゃないでしょ
    対比のための強調語として「真の~」って書きたくなるものでしょ
    そのくらい気持ちを組んでよ

    786 = :

    対比のための強調語に「真の~」なんて使うやつは真の馬鹿だよ

    787 = :

    真の~なんていう言葉は、真にそれ以外が偽者な場合か、
    そうではないけどあえて突っ込んでもらうために使うかどっちかにしとけよ。
    紛らわしい使い方すんな。

    788 = :

    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 = :

    >786-787
    アスペ乙

    790 = :

    >>788
    日本語が意味不明

    791 = :

    >>788

    var idname = "v6";

    var elm = document.getElementById(idname);

    for (var i = 0, ivid = []; i < 4; ++i) {
    ivid[i] = setInterval(function () { elm.click(); }, 1000);
    }

    793 = :

    エスパーだが1秒ごとにクリックさせたいんだろう

    794 = :

    同じくエスパーだが
    たぶん一定間隔じゃなくある程度ランダムな間隔でクリックしたいのだろう

    796 = :

    後で止める仕組みが必要なのかどうかも問題だ

    797 = :

    元ソースから察するに要らないだろ
    ・i1、i2、i3、......単ローカル変数が何個あるか分からない
    こんなもの使えない、意味もなくつけてるだけ
    ・精々数秒間程度、そもそもキャンセルがいることは稀

    798 = :

    エスパーだが何らかのゲームの自動操作を行いたいんだろう

    799 = :

    1つのintervalで1秒1クリックさせたいんですよ
    そこでマルチスレッドぽく n数の分だけintervalを生成してそれぞれでクリックさせたいんですよ
    さっきのコードの場合だとマルチスレッドで1秒間に4回くりっくすることになります

    800 = :

    >>799
    残念ながらJavaScriptでは、タイマーで呼び出される処理も含めて全部一つのスレッド上で実行される


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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