我已經能夠找到一些類似的問題,但我覺得內部提供的答案沒有完全排除我的困惑。控制變量範圍
我在使用jQuery時遇到過這個問題,但我想這是一個比jQuery更具體的JS問題。
我覺得在下面的例子中,我想定義的這些變量是很好的全球候選者,它們在幾個函數之外有廣泛的用途,但是我覺得我想限制暴露。
$(function() {
$containers = $('.container');
$childContainer = $('#childContainer');
//Removed extra code
var $aButton = $('#childButton');
//Removed extra code
$containers.hide();
$childContainer.show(400);
$aButton.on('click', clickChildButton);
//Removed extra code
};
function clickChildButton() {
$containers.hide(400);
$childContainer.show(400);
}
我將有一些按鈕顯示/隱藏各種容器。在所有情況下,$containers
變量都需要對其他函數可見,以使其隱藏。
我應該使用全局變量(或者命名空間全局對象破解)還是有另一種方法可以限制$containers
變量的範圍?
我不使用匿名函數來處理,因爲它們將開始變得越來越複雜一點(和含有比clickChildButton
功能只顯示兩行更多的點擊事件太熱衷。
注:在這個特殊的例子可能是更好的重構代碼,並創建一個hideContainers
功能,但我更感興趣的是如何控制的一般變量的作用域,而不是這個特殊的例子
感謝
'我覺得在下面的例子中,這些變量我想定義將是很好的候選人爲global' - 你應該有儘可能少的全球性的地,最好沒有。如果您必須全局公開某個東西,請公開一個名稱空間變量(一個對象),並將所有其他*全局變量*從這個名稱空間中取出。限制範圍的最好方法是將所有內容都包含在'IIFE'中,並使用'var' - voila - no globals。 – Adam
@亞當:感謝您的評論,我懷疑你說的可能是這樣。根據你在這裏的評論和Amadan的評論,我將沿着IIFE路線走下去。 – BadAtMaths