Javascriptの効率を向上させ、毎回判断しないで判断します.

2101 ワード

判断は、2つ以上の選択肢がある場合に選択することです.例えば、私の家の前に会社に行くには分かれ道があります.私が初めてどの道が正しいか知っていれば、私は次の道やこれからの毎回考えなくてもいいです.直接その道を行けばいいです.もちろん、天災が発生したときはそうではありません.
判断を下すには時間がかかり、対応条件が必要です.正しい判断はいいが、分かれ道に直面するたびに、何度も分かれ道を歩いても、判断を下すのは、頭の悪い行為に違いない.
ブラウザの種類を判断し、透明度のプロパティを設定する機能を果たしています.
 
  
function setAlpha(obj,alpha){
if (-[1,]) obj.style.opacity = alpha / 100;
else obj.style.filter = "alpha(opacity=" + alpha + ")";
}

この関数は間違っていますか?いいえ.まずブラウザが標準ブラウザかどうかを判断し、もしそうであれば、直接opacityで透明を設定します.そうでない場合、IEフィルタを使用して透明度を実現します.
論理がはっきりしていて、コードが簡潔で、逸品ですね.
しかし、間違いはなかったが、ミスがあった.
通常、この透明度を設定する関数は、ループが終了するまでsettimeoutによって呼び出されるフェードアウト効果を作成するために使用されます.
この時問題が来た.前の分かれ道の問題に戻ると、この関数は、交差点に来るたびに、考えて判断することに相当します.1回目、交差点に来て、騒いで、私は見て、ああ、firefoxですね.1本目の道を行きます.2回目、またこの交差点に来て、待って、私は見て、ああ、またfirefoxで、また1本目の道を歩いて......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とie 6の下でそれぞれalertしてこの関数を見ることができて、分かりました.
自己実行関数によってsetAlphaが宣言されると関数が実行されますが、この関数の役割は、ブラウザを判断し、透明度を設定する方法を決定することです.ブラウザのタイプはページを開くと変更できないので、後で判断する必要はありません.10万回この関数を呼び出しても、彼は判断せずに直接実行します.
コードは醜いが、境界は違う...
この例はただの小さな手本で、私はただあなたが「一度判断して、何度も判断しないでください」の道理を理解して、大いに発揚することを望んでいます.判断回数を減らすことでjsの効率が大幅に向上する.
転自:jo 2.org