ホームページ >ウェブフロントエンド >jsチュートリアル >何度も判断するのではなく、一度判断することで JavaScript の効率を向上させる_JavaScript のヒント

何度も判断するのではなく、一度判断することで JavaScript の効率を向上させる_JavaScript のヒント

WBOY
WBOYオリジナル
2016-05-16 17:54:351079ブラウズ

判断とは、2つ以上の選択肢に直面したときに選択をすることを意味します。たとえば、会社に行くために家の前に分かれ道があります。最初にどちらが正しいかさえ分かれば、次回や毎回それを考える必要はありません。もちろん、突然の自然災害は考慮されません。
判断には時間がかかり、それに応じた条件が必要です。正しい判断をするのは良いことですが、たとえ数え切れないほどの分岐点に直面したとしても、そのたびに判断を下すのは間違いなく一種の脳死行動です。

よく見かける JS 関数を見てみましょう。その機能は、ブラウザの種類を判断し、対応する透明度属性を設定することです。

コードをコピー コードは次のとおりです:

function setAlpha(obj,alpha){
if (-[1,]) obj.style.opacity = alpha / 100 ;
else obj.style.filter = "alpha(opacity=" alpha ")"
}

この関数に何か問題がありますか?いいえ。まず、ブラウザが標準ブラウザであるかどうかを確認し、そうでない場合は、IE フィルタを使用して透明度を設定します。

ロジックは明確で、コードは簡潔で、素晴らしいです。

しかし、間違いはありませんが、間違いはあります。

通常、透明度を設定するこの関数はフェード効果を作成するために使用されます。つまり、この関数はループが終了するまで setTimeout によって何度も呼び出されます。

ここで問題が発生します。先ほどの分岐点の問題に戻りますが、この機能は交差点に来るたびに考えて判断することに相当します。一回目は交差点に来ました、待って、見せてください、ああ、Firefox です、最初の道を進み、二回目はまた交差点に来ました、待って、見せてください、ああ、また Firefox です。 . そして最初のルートを通りました...3回目...4回目。 。 。 。この機能は何度でも、最も献身的な交通警察官のようにあなたの身元を確認します——イライラしませんか?あなたが私を困らせないなら、私もそうします!

現時点で、近くを通りかかった人は、この交通警官は絶対に消えてほしいです。

実際、私たちは道路の分岐点に遭遇したとき、こうすることができます。進むべき道が 1 つしかないことはすでにわかっているので、もう一方の道を塞いだほうがよいでしょう。もちろん、これは現実では不可能ですが、考え方を変えるだけでコードで実装することは難しくありません。

JavaScript には不思議な機能があります。それは、匿名関数 (通常、自己実行に使用されます) です。自己実行関数とは、宣言されたときに実行され、表示されないことを意味します。探しても見つからないかもしれません!個人的にはこの機能はかなり良いと思います。

以下のコードを見てください。これは透明度を設定する関数でもあります:

コードをコピーコードは次のとおりです:

var setAlpha = (function(obj,alpha){
var set;
if (-[1,]) {
set = function (obj,alpha) {
obj.style.opacity = alpha * 0.01;
}
}
else {
set = function(obj,alpha){
obj.style .filter = "alpha( opacity=" alpha ")";
}
}
return set;

おそらく不満があります:一体これは初心者レベルのようですが(見抜いてましたね…)、しかし!これは、以前のバージョンよりもはるかに効率的です。信じられない場合は、Firefox と IE6 でそれぞれこの機能を警告してみれば理解できるでしょう。

自己実行関数は、setAlpha が宣言されたときに関数が実行され、ブラウザを判断して透明度の設定方法を決定する機能です。ページを開いた後にブラウザの種類を変更することはできないため、今後判断する必要はありません。この関数は10万回呼び出しても再判定は行わず直接実行します。

コードは醜いですが、状態は異なります...

この例は、「何度も判断するのではなく、一度だけ判断する」という原則を理解していただければ幸いです。 」と続けてください。判定回数が減るとjsの効率が大幅に上がります。
転載元:jo2.org
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。