var x=10;
function fn() {
console.log(x)
}
function show(f){
var x=20;
f();
}
show(fn)//输出结果为10
说明:红色为全局作用域,黄色的为fn的作用域,蓝色为show的作用域
可以有2中理解
1.作用域在写代码的时候就已经确定了,所有在运行fn的时候找x是到全局里找
2.也可以用this的指向问题来理解,fn运行时是自己单独运行,所有this指向window
var fn=function() {
console.log(fn)
}
fn()// function() {console.log(fn)}
var obj={
fn2:function(){
// console.log(fn2)
console.log(this.fn2)
}
}
obj.fn2()
console.log(fn2)//输出的是undefined 首页它会在fn2里找是否有fn2,没有再到window下找,没找到,所以undefined,如果要找到obj的需要加this
console.log(this.fn2)//输出的结果是 ƒ (){ console.log(this.fn2) }