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

    私的良スレ書庫

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

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

    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
    301 : Name_Not - 2014/08/10(日) 03:47:52.46 ID:???.net (+35,+29,-70)
    >>62の件ですが、
    普段はdynabookのwin7使っているのですが、
    Meにしたらブルースクリーンがでました・・。
    まさか本当にブルースクリーンが出るのが自分だけとはおもいもしませんでした
    結果的にインストールしたdynabookが起動しなくなったという副産物はありましたが
    かくつくという書き込みをはなから信じずに検証した結果がこのざまだよ
    どうしてくれる
    302 : Name_Not - 2014/08/10(日) 04:02:55.58 ID:???.net (+27,+29,-5)
    まだGCの話続いてたのかよ
    もう300越したっていうのに
    303 : Name_Not - 2014/08/10(日) 04:09:17.06 ID:???.net (+14,+28,+0)
    >>300
    クロージャじゃないがな
    304 : Name_Not - 2014/08/10(日) 04:19:07.51 ID:???.net (+33,+30,-147)
    >>300
    一応、いっておくが「クロージャを全く使うな」という話は誰もしてないぞ
    クロージャを必要最小限に抑えるのが重要
    >>299は良くあるパターンなら listener を無名関数に出来るからクロージャを発生させないことも出来る
    ただ、後々の処理を考えると listener だけはクロージャに閉じ込めておくほうが有用なケースが多いだろう
    グローバルコードにすればクロージャは発生しないが、グローバル名前空間を使いつぶすのはナンセンス
    クロージャは1段階だけ発生させて、それ以上は出来る限り関数の階層を深くしなければ良い
    305 : Name_Not - 2014/08/10(日) 05:03:15.60 ID:???.net (-24,-29,-25)
    >>303
    なんでlistenerクロージャーじゃないんですか?

    それを言ったら、そのlistenerを使えば
    jQueryでもクロージャーではなくなりますよね?
    306 : Name_Not - 2014/08/10(日) 06:00:50.29 ID:???.net (+27,+29,-100)
    >>305
    その通り
    jQueryでもクロージャを発生させないことは出来る
    jQueryは妙に無名関数に最適化されてるからクロージャを発生させやすいだけ
    「jQuery=クロージャ」とは誰も言ってないよ
    307 : Name_Not - 2014/08/10(日) 06:52:10.94 ID:???.net (-27,-29,-58)
    >>301の件、
    bootcampを最新バージョンにupdateしたら遅延がなくなりました\(^o^)/
    まさかこんな理由とは
    ありがとうございました
    308 : Name_Not - 2014/08/10(日) 06:52:49.33 ID:???.net (+20,+21,-14)
    >>298の間違いでした
    309 : Name_Not - 2014/08/10(日) 06:55:25.02 ID:???.net (-25,-29,-156)
    >>306
    > jQueryは妙に無名関数に最適化されてるからクロージャを発生させやすいだけ
    意味が全くわからん。

    jQueryを使わなくても、addEventLisnerには無名関数を使用するのが一般的だし、
    forEachに無名関数を使わないなんて考えられないんだが。

    単に無名関数になれてないだけじゃないか。
    310 : Name_Not - 2014/08/10(日) 15:45:43.02 ID:???.net (+27,+29,-17)
    ドラッグ中のメモリグラフを見るとGCは絶え間なく発生してるのですが
    体感出来ない程細かく砕かれているってことかな
    小さいギザギザはむしろ正常ということでしょう
    311 : Name_Not - 2014/08/10(日) 23:56:12.40 ID:???.net (-21,-30,-61)
    引数として渡されたオブジェクトを関数内で書き換えるのはダメですか?

    function (obj){
    if (obj.hoge===undefined) obj.hoge = 'moge';
    }

    こういうのです
    312 : Name_Not - 2014/08/11(月) 00:01:01.90 ID:???.net (+25,+29,-3)
    >>311
    いたって当たり前の事だぞ
    314 : Name_Not - 2014/08/11(月) 00:20:06.82 ID:???.net (-26,-29,-81)
    後出しせず全部最初に言いなよ
    できれば質問内容と前提条件と日本語を整理して

    「(引数)オブジェクトの加工が目的じゃない」関数の中で
    引数オブジェクトの加工をしてもいいのか、っていう話?

    ついでに別に obj でも parameters でもどっちでもいいよ。問題はそこじゃない
    315 : Name_Not - 2014/08/11(月) 00:24:45.63 ID:???.net (+33,+30,-241)
    引数名がどうたらは、自分で考えろ。


    Arrayクラスのwikipediaにあるように、Arrayのメソッドには破壊的メソッドと非破壊的メソッドがあるのがわかると思う。
    http://ja.wikibooks.org/wiki/JavaScript_%E6%A8%99%E6%BA%96%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA_Array


    呼び出し元が破壊的メソッドに渡したオブジェクトの値を勝手に変更するのがいいことか悪いことかは一概にはいえんし、
    参照を持ってる言語に常について回る問題だから、自分の考えで適切な方法を選択するのがいいと思うよ。
    まぁ、加工が目的じゃないって時は、オブジェクトの完全コピー作って返すのが、俺は好きだが、コストの兼ね合いもあるから自分で考えろ。
    318 : Name_Not - 2014/08/11(月) 01:25:04.82 ID:???.net (+27,+29,-3)
    例外はあるだろうけど、一般的にはよくない。
    319 : Name_Not - 2014/08/11(月) 01:38:04.35 ID:???.net (-1,+5,+1)
    ありがとうございました
    320 : Name_Not - 2014/08/11(月) 01:57:50.63 ID:???.net (-27,-30,-18)
    function fn(){
    function fn1(){
    }
    }

    このような時、fn1は関数が呼ばれるたびに再定義されるのでしょうか?
    321 : Name_Not - 2014/08/11(月) 01:58:01.25 ID:???.net (-11,-9,-33)
    PHPでできることってほぼjavascriptでできることないですか?
    DB以外は
    322 : Name_Not - 2014/08/11(月) 01:58:31.42 ID:???.net (-28,-29,-5)
    ×関数が呼ばれるたび
    ○fnが呼ばれるたび

    でした
    323 : Name_Not - 2014/08/11(月) 02:22:38.18 ID:???.net (+14,+25,+1)
    >>322
    はい。
    324 : Name_Not - 2014/08/11(月) 03:15:05.32 ID:???.net (+22,+29,-15)
    まじですか
    それはいけませんね
    325 : Name_Not - 2014/08/11(月) 07:45:21.96 ID:???.net (-24,-29,-149)
    >>309
    循環参照対策にremoveEventListenerで後始末したり、別スコープに名前付き関数で定義するのは一般的
    forEachも関数の階層が深いなら別スコープで定義するために名前付き関数にする事はよくあることだよ
    「無名関数を使わないなんて考えられない」という思い込みがパフォーマンスを低下させる
    http://cou929.nu/data/google_javascript_style_guide/#id19
    326 : Name_Not - 2014/08/11(月) 08:41:31.41 ID:???.net (+23,+29,-4)
    >>320,324
    クロージャの基本だから勉強して
    327 : Name_Not - 2014/08/11(月) 09:13:47.14 ID:???.net (+28,+29,-89)
    >>325
    お前、クロージャー=無名関数って勘違いしてないか?

    参照の循環が問題なんだから、無名にしてもしなくても結果は同じだよ。
    実際にその例で、無名にしない場合の説明してるじゃないか。
    それは循環参照にしない方法じゃないぞ。
    328 : Name_Not - 2014/08/11(月) 09:57:41.47 ID:???.net (+5,-15,-31)
    >>327
    参照しない場所に関数を置くには名前付き関数にするしかないでしょ
    無名関数にしたらネスト必須になる
    329 : 328 - 2014/08/11(月) 09:58:08.77 ID:???.net (+25,+27,-11)
    × 参照しない場所に関数を置くには名前付き関数にするしかないでしょ
    ○ 循環しない場所に関数を置くには名前付き関数にするしかないでしょ
    330 : 328 - 2014/08/11(月) 10:06:11.41 ID:???.net (+20,+22,-30)
    何か勘違いしてるっぽいけど、下のコードは循環してないよ
    function bar でスコープを変更することで循環しないようにしてる
    循環参照=クロージャと誤解してない?
    331 : Name_Not - 2014/08/11(月) 10:11:49.20 ID:???.net (+27,+29,-3)
    やはりWeb屋にクロージャは過ぎたおもちゃということか
    332 : Name_Not - 2014/08/11(月) 12:18:08.76 ID:???.net (+27,+29,-9)
    循環参照はわかりにくいからなあ
    俺は覚えるのに1週間ぐらいかかった
    333 : Name_Not - 2014/08/11(月) 14:55:19.06 ID:???.net (+27,+29,-27)
    クロージャってないならないでなんとかなる技術だよな
    潜在的な問題を発生させやすいなら使わない方がいいな
    334 : Name_Not - 2014/08/11(月) 15:11:08.24 ID:???.net (+25,+27,-31)
    jqueryのイベントオブジェクトにメソッドを追加したい時はどうやればいいですか?
    335 : Name_Not - 2014/08/11(月) 16:39:07.88 ID:???.net (+16,+23,-2)
    ヘルプを読むといいよ。
    336 : Name_Not - 2014/08/11(月) 16:58:50.45 ID:???.net (+20,+27,-1)
    答えになってません
    337 : Name_Not - 2014/08/11(月) 18:12:33.35 ID:???.net (+26,+28,-8)
    あるクリックがダブルクリックじゃないかを簡単に調べる方法があれば教えて下さい
    339 : Name_Not - 2014/08/11(月) 20:50:23.92 ID:???.net (+32,+29,-74)
    jqueryで、同種のイベントハンドラが複数ある時、
    イベントオブジェクトの元になったイベントが同じものかどうかを知りたい時は
    どうやればいいのでしょうか?
    テストしたところ、
    イベントオブジェクトのtimeStampは同じになるようですが、
    これが保証されたものなのかどうか分かりません
    340 : Name_Not - 2014/08/11(月) 20:57:29.68 ID:???.net (+27,+29,-19)
    そもそもJSのイベントシステムに同一性という概念があるのかも分かりません
    341 : Name_Not - 2014/08/11(月) 21:03:40.13 ID:???.net (-27,-30,-149)
    もしかして、バブルアップしていくのは単一のイベントオブジェクトなんじゃないかと思い

    var testEvent;

    $(document).on('click',function(e){
    console.log(e === testEvent);
    });

    $('#test').on('click',function(e){
    testEvent = e;
    });

    とやってみたら、異なりました
    これは単一であるべきではないでしょうか
    343 : Name_Not - 2014/08/11(月) 21:15:23.82 ID:???.net (+27,+29,-17)
    循環参照されていると、GCされないので、
    GCをさけるには循環参照させると良さそうですね。
    カクつきを避けるテクニックとして使えそうです。
    345 : Name_Not - 2014/08/11(月) 21:58:04.49 ID:???.net (-12,-10,-2)
    いえ、GCです。すべてはGCが原因です。
    346 : Name_Not - 2014/08/11(月) 22:16:33.49 ID:???.net (+22,+29,-3)
    天狗じゃ、天狗の仕業じゃ
    348 : Name_Not - 2014/08/11(月) 22:41:00.52 ID:???.net (+23,+25,-16)
    GC気にするならjqueryなんて使わない方が良いよマジで
    350 : Name_Not - 2014/08/11(月) 22:52:42.37 ID:???.net (+9,+11,-15)
    jqueryからソースをパクってくる
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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