腾讯js面试题1
该题难度系数为:★★★
考查技术点:1). 作用域与作用域链 2). 变量查找
var x = 10;
function fn() {
console.log(x);
}
function show(f) {
var x = 20;
f();
}
show(fn);
运行结果为:
接下来我们分析下思路:
首先我们先来了解下三个概念,
作用域:
一块特定的代码区域,全局作用域和函数作用域,隔离变量,避免命名冲突
作用域链:
由内向外的多个嵌套的作用域形成的链条
查找变量:
从当前作用域开始,沿着作用域链查找(注意不是原型链查找),如果找不到,就报错
调用show(fn),就是把fn函数当作函数参数传进去,即show函数变成了,
function show(f) {
var x = 20;
fn();
}
具体分下如图所示:
还没有评论,来说两句吧...