这是一道笔试常考的选择题,在js私有作用域(function(){})()里面调用外面的函数,如下面代码:
var a=1;
var fn = function(){
console.log(a);
};
(function(){
var a=2;
fn();
console.log(a);
})()
输出为1 2;
因为fn函数没用明确指出调用上下文,默认为全局上下文window,所以输出1;(js中只用通过obj.fn()或者一些绑定对象函数来明确指出上下文,没有一般默认为window);
第二个输出2,是因为作用域就近原则。