这里答案是一个例子,
(function() {
console.log(1);
// Local variable that ends up within closure
var num = 666;
var sayAlert = function() { console.log(num); }
num++;
return sayAlert();
})();
这将定义之后立即调用。
与您的代码
所以,
function setupSomeGlobals() {
var num = 666;
// Store some references to functions as global variables
gAlertNumber = function() {console.log(1); alert(num); }
gIncreaseNumber = function() { num++; }
gSetNumber = function(x) { num = x; }
gAlertNumber();
}
setupSomeGlobals();
在这里,你可以调用子功能gAlertNumber()
父功能setupSomeGlobals()
内,你不能在父函数外部访问它。
但是你可以调用父函数之后调用此,这意味着不调用gAlertNumber()
父函数内。把它调用父等之后,
function setupSomeGlobals() {
// Local variable that ends up within closure
var num = 666;
// Store some references to functions as global variables
gAlertNumber = function() {console.log(1); alert(num); }
gIncreaseNumber = function() { num++; }
gSetNumber = function(x) { num = x; }
}
setupSomeGlobals();
gAlertNumber();
你不能在函数之外访问它,因为它不在范围之内,并且你没有可访问的引用 – musefan
@Jeffman,@musefan:'gAlertNumber'是一个全局变量。为什么你认为它不能在'setupSomeGlobals'之外访问? [小提琴](http://jsfiddle.net/j5yTn/) – Andreas
这是一个不错的方法来初始化的全局变量,你真的不应该反正使用全局变量。在“严格”模式下,这将是一个错误。 – Pointy