- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
901 :デフォルトの名無しさん[sage]:2016/05/20(金) 09:34:42.32 ID:b4YdUNc7 - >>898
検索のコストが問題になってからやるべきこと。 HTMLがシンプルであれば、全要素が少ないから たとえ全要素を捜査するようなものでもコストは低くなる。 キャッシュの前にやるべきことは、チェーンを使うことだ。 そしてイベントハンドラの中では$(this)を使うのは当然として、 $(this).find('・・・')を使えば、thisの中の要素のみを調べるから これもid以外でも要素数が少ないから速くなる。 キャッシュ以前にそもそも検索自体を無くすことが第一。 その後で検索のコストが問題になるならば キャッシュすることを考えろ。
|
- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
916 :デフォルトの名無しさん[sage]:2016/05/20(金) 23:24:25.98 ID:b4YdUNc7 - >>907
「早すぎる最適化は諸悪の根源である」という言葉を知らなければモグリだよ。 jQueryにかぎらず、プログラム全般において早すぎる最適化をしてはいけない。 それからこれは「固定値を定数化して保守性を高める」という話じゃない。 あんたが言ってるのは、マジックナンバー、つまり数値じゃ意味がわからないときに 限って定数化するって話だ。 もともとセレクタにはわかりやすいID または クラス名が使われている。 $('#search-form') というものを var serch_form = '#search_form'; $(search_form)としたって、 保守性は高くなってないし、var $serch_form = $('#search-form')としても保守性は変わらない。 どうせID名が変われば、変数名も変わる。 一つの関数内で同じjQueryオブジェクトを何度も使うならば・・・つまりこういうコード function foo() { $('#search-form').on(・・・); $('#search-form').attr(・・・); $('#search-form').css(・・・); } 短い名前を割り当てるのは理にかなっている。 function foo() { var $form = $('#search-form'); $form.on(・・・); $form.attr(・・・); $form.css(・・・); } だけど広いスコープで短い名前を割り当てるのは保守性の面から見て良くない。 短いスコープの中でのみ通用する話。そしてこれは知っての通りメソッドチェーンを使うことで変数は不要になる。 (つづく)
|
- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
917 :デフォルトの名無しさん[sage]:2016/05/20(金) 23:29:45.35 ID:b4YdUNc7 - そして、
var $forms1 = $('.forms'); //・・・(1) function foo() { var $forms2 = $('.forms'); //・・・(2) } この(1)と(2)は意味が違う。(1)は最初に実行した時の要素をずっと指し示めしているのに対して、 (2)は現在のDOMの状態から新たに検索する。 DOMは変化するもの(言い方を変えるとグローバル変数のようにどこで誰が変更するかわからない)と言う 前提に立てば、最新のDOMの状態を参照した方がいい。 もともと早すぎる最適化をするのは、悪い習慣であることに加え 最適化をするリスクを考えると、問題にならない限りやらないほうがいいし、 そもそもちゃんとしたjQueryの書き方をしていれば、jQueryオブジェクトを キャッシュするなんてことが必要になることが少ない。
|
- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
918 :デフォルトの名無しさん[sage]:2016/05/20(金) 23:33:28.30 ID:b4YdUNc7 - 訂正
> 最適化をするリスクを考えると、 リスクというより、jQueryオブジェクトをキャッシュするというのは 挙動を変えてしまう行為って言ったほうがいいかな。
|
- + JavaScript の質問用スレッド vol.119 + [無断転載禁止]©2ch.net
919 :デフォルトの名無しさん[sage]:2016/05/20(金) 23:46:06.92 ID:b4YdUNc7 - それにしても「早すぎる最適化は諸悪の根源である」っていう
言葉を知らんっていうのは本当に恥ずかしいことだよ。 それだけは強く言っておきたい。 もし反論したくなったら、何か書く前にこの言葉でググってからにしてくれ。
|