みなさんはjQueryオブジェクトを変数に保存しておきますか?みなさんの当てはまるものを次から教えて下さい。①var hoge = $(’#parent .child’);で前もって保存しておく②var hoge = $(’#parent’); とし必要なときに都度hoge.find()を行う③全体的に使うなら保存しておく④保存せず都度探査させる. . . .当方としては、メモリを圧迫したくないし昨今CPUの能力も高いので④の都度探査させる、です。
だいたい②かな。.find()使ったほうが処理が早いという理由で。ちょっとしたものを作るときは④。正直プログラム畑じゃないので、軽量化高速化以外にメモリを圧迫とかはあんまり意識したことなかった...
③です!!
状況によって使い分けるとしか言いようがない。
① 2回以上使用すると決まっている場合。特にループで使用する場合は必須。② 2回以上使用する可能性はあるが、使わない可能性もある場合。④ 1回しか使わないと決まっている場合
結構バラバラなんですねぇメモリ優先(メモリ消費を抑える等)かCPU優先(処理時間や電力の消費を抑える等)かでいうとどうですか?
処理時間かな
一定以上の規模になるとセレクタを変数で保持するのは、早さというよりもDRYの原則として使います。メモリに関してはセレクタくらいのレベルならほとんど気にする必要はないかと思いますが。
④なんていうか、jQueryオブジェクトって知らない間に中身が入れ替わる事があるので極力ベタで書いてる。変数に入れたほうが最適化できるんだろうけど、それが差に現れるほど重量級のスクリプトなんて書かんし。どうしてもコード的に共通化したい場合は、検索式の方を変数化する選択肢もあると思う。
認識が甘いんじゃないかな。scrollイベントあたりでそんな使い方をするだけでスマホじゃ重くなる。もしくは、scrollイベントが重量級なの?
scrollイベントでどういう使い方するのかにもよるけど、おそらくは座標関係でしょ?それだったらjQueryオブジェクトではなく座標の数値を変数に入れる。
っていうか、スマホも対象にする案件でscrollでごにょごにょするような安件なんてほとんど無いから認識甘いっちゃ甘いのかもしんない。
stickyなんていうのはそのものだね。
みんなの回答 6 件
だいたい②かな。.find()使ったほうが処理が早いという理由で。
ちょっとしたものを作るときは④。
正直プログラム畑じゃないので、軽量化高速化以外に
メモリを圧迫とかはあんまり意識したことなかった...
③です!!
状況によって使い分けるとしか言いようがない。
① 2回以上使用すると決まっている場合。特にループで使用する場合は必須。
② 2回以上使用する可能性はあるが、使わない可能性もある場合。
④ 1回しか使わないと決まっている場合
結構バラバラなんですねぇ
メモリ優先(メモリ消費を抑える等)かCPU優先(処理時間や電力の消費を抑える等)かでいうとどうですか?
一定以上の規模になるとセレクタを変数で保持するのは、早さというよりもDRYの原則として使います。
メモリに関してはセレクタくらいのレベルならほとんど気にする必要はないかと思いますが。
④
なんていうか、jQueryオブジェクトって知らない間に中身が入れ替わる事があるので極力ベタで書いてる。
変数に入れたほうが最適化できるんだろうけど、それが差に現れるほど重量級のスクリプトなんて書かんし。
どうしてもコード的に共通化したい場合は、検索式の方を変数化する選択肢もあると思う。
関連するトピックス