函数作用域(示例)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function EE(){console.log(this)}
EE(); // 全局作用域
new EE(); // 局部作用域

function FF(){return function(){console.log(this)}}
FF()(); // 全局作用域
new FF()(); // 全局作用域

function GG(){return {a: function(){console.log(this)}}}
GG().a(); // 局部作用域
new GG().a(); // 局部作用域

var hh = {
a: function(){console.log(this);},
ee0: function(){EE();},
ee: function(){new EE();},
ff0: function(){FF()();},
ff: function(){new FF()();},
ff1: FF(),
gg: function(){new GG().a()}
};

hh.a(); // hh的局部作用域
hh.ee0(); // 全局作用域
hh.ee(); // ee的局部作用域
hh.ff0(); // 全局作用域
hh.ff(); // 全局作用域
hh.ff1(); // hh的局部作用域 --- 从此解开谜底
hh.gg(); // GG的局部作用域