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/ –
謝謝克里斯,現在閱讀文章。 – MarioD
如果一切都在$(document).ready(function()...)內,那麼它不在全局範圍內,它在該函數的範圍內。 – Barmar