판단이란 두 가지 이상의 선택 사항에 직면했을 때 선택하는 것을 의미합니다. 예를 들어, 회사에 가려면 집 앞에 갈림길이 있는데, 처음으로 어떤 길이 맞는지 알면 다음 번에나 갈 때마다 그것에 대해 생각할 필요가 없습니다. 미래는 그런 식으로 받아들일 수 있습니다. 물론 갑작스러운 자연재해는 포함되지 않습니다.
판단에는 시간이 걸리고 그에 상응하는 조건이 필요합니다. 올바른 판단은 좋지만, 갈림길을 수없이 지나도 갈림길을 만날 때마다 판단을 내리는 것은 의심할 바 없이 일종의 뇌사행동이다.
자주 볼 수 있는 JS 함수를 살펴보겠습니다. 그 기능은 브라우저 유형을 결정한 다음 해당 투명도 속성을 설정하는 것입니다.
function setAlpha(obj,alpha){
if (-[1,]) obj.style.opacity = alpha / 100 ;
else obj.style.filter = "alpha(opacity=" alpha ")";
}
이 함수에 문제가 있나요? 아니요. 먼저 브라우저가 표준 브라우저인지 확인하세요. 그렇다면 불투명도를 통해 직접 투명도를 설정하세요. 그렇지 않으면 IE 필터를 사용하여 투명도를 얻으세요.
논리도 명확하고, 코드도 간결하고, 훌륭해요!
그러나 실수는 없지만 실수는 있다.
보통 투명도를 설정하는 이 함수는 페이드 효과를 생성하는 데 사용됩니다. 즉, 루프가 끝날 때까지 setTimeout에 의해 계속 호출된다는 의미입니다.
여기서 문제가 발생합니다. 이전 갈림길 문제로 돌아가서 이 기능은 교차로에 올 때마다 생각하고 판단하는 것과 같습니다. 처음에는 교차로에 왔어요. 잠깐만요. Firefox입니다. 두 번째로 교차로에 왔어요. 잠깐만보세요. 또 Firefox입니다. , 첫 번째 경로를 선택했습니다...세 번째...네 번째 경로를 선택했습니다. . . . 몇 번을 사용해도 이 기능은 가장 헌신적인 교통경찰처럼 당신의 신원을 확인합니다——짜증나지 않나요? 당신이 나를 괴롭히지 않으면 나도 그럴 거예요!
이때, 지나가고 계시다면 꼭 이 교통경찰이 사라졌으면 하는 마음이 드실 겁니다.
자바스크립트에는 마법 같은 기능이 있습니다. 익명 함수(보통 자체 실행에 사용됨) 자체 실행 함수는 선언되면 실행되고 나타나지 않습니다. 앞으로도 또.. 찾아봐도 못찾을 수도 있어요! 개인적으로 이 기능은 꽤 좋다고 생각합니다.
투명도 설정 기능이기도 한 아래 코드를 살펴보세요.
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