- 下列代码块输出什么
var x = 10;
function fn() {
console.log(x)
}
function show(f) {
var x= 20;
f();
}
show(fn);
用自己的话来说清楚:
- 调用show函数,并把fn作为参数传入show函数
- 此时好像变成了
function show(f) {
var x= 20;
function fn() {
console.log(x)
}
}
- 乍一看结果就是20,但结果其实是10
- 每个函数都有自己独立的执行环境,在代码完成的时候就确定了自己的作用域。卡住你的点就在于show函数的形参是一个函数,fn函数传进去的话好像变成了show函数的一个子函数了,其实不是的,你可以理解成就是请fn来帮忙,那fn还是以自己的风格来做事。虽然fn被show调用了,但还是在自己的执行环境里面行动的。
- 下面代码输出什么
var fn = function () {
console.log(fn)
}
fn();
var obj = {
fn2:function () {
console.log(fn2);
}
}
obj.fn2();
- 函数fn()输出什么
1.1 fn既是一个变量,也是一个函数,它是一个函数,函数的语