Javascript范围未定义

Kev*_*vin 4 javascript scope

关于javascript范围的jquery网站的在线文档我有问题.有代码;

(function() {

var baz = 1;

var bim = function() {
    console.log( baz );
};

bar = function() {
    console.log( baz );
};

})();
Run Code Online (Sandbox Code Playgroud)

并说:

console.log( baz ); // baz is not defined outside of the function
Run Code Online (Sandbox Code Playgroud)

我不明白的是,即使baz已定义,为什么console.log(baz)未定义.因为我认为范围是一样的.我错过了什么?

Roy*_*mir 5

陷阱是IIFE- 立即调用的函数表达式,它创建自己的范围.

JS正在使用函数范围

所以baz不是该IIFE之外定义.

change this to :

(function() {

 window.baz = 1;     <----

var bim = function() {
    console.log( baz );
};

bar = function() {
    console.log( baz );
};

})();
Run Code Online (Sandbox Code Playgroud)

它会奏效.

PS

这是jQuery如何附加(当他们完成bla bla ..)$/jQuery到窗口.(只有窗口.$位于最后一行).