1
동일한 모듈 내에서 여러 함수에서 변수를 사용해야하는 경우 변수가 전역이되지 않도록하는 가장 좋은 방법은 무엇입니까?변수를 전역으로 만들지 마십시오.
여러분도 알다시피 전역 변수를 사용할 수 있어야합니다.하지만 결국 전역에 정의 할 필요는 없습니다. 나는 그들을 함수로 감싼다?
또한 누군가이 코드를 향상시키는 방법에 대한 조언이 있으면 듣고 싶습니다. 함수에
// Info Bullet Slide Out
var slideOut,
clickedButton,
clickedParent,
activeClass = 'is-active',
openClass = 'is-open';
function closeSlideOut(){
$('.tlx-img-point').removeClass(activeClass);
slideOut.removeClass(openClass);
clickedParent.removeClass(activeClass);
}
function openSlideOut(){
slideOut = $('.' + clickedButton.attr('id'));
slideOut.addClass(openClass);
clickedParent.addClass(activeClass);
clickedButton.addClass(activeClass);
}
$('.tlx-img-point').on('click', function(){
clickedButton = $(this);
clickedParent = clickedButton.parent();
// If you clicked on the same button twice just close the slideout
if($(this).hasClass('is-active')){
closeSlideOut();
// If you clicked on another info button close this one and open the new one
}else if(clickedParent.hasClass(activeClass)){
closeSlideOut();
// Delay 5ms to allow css animation to complete
setTimeout(function(){
openSlideOut();
}, 650);
// Open the info slide out
}else{
openSlideOut();
}
});
글로벌 범위가 엉망입니다 - IIFE를 사용하여 모든 것을 마무리하십시오! http://benalman.com/news/2010/11/immediately-invoked-function-expression/ –
Chris, 지금 기사를 읽어 주셔서 감사합니다. – MarioD
모든 것이'$ (document) .ready (function() ...) '안에 있다면 전역 범위가 아니며 그 함수의 범위에 속합니다. – Barmar