javascript函数读取变量作用域简单介绍

快乐打工仔 分类:实例代码

关于作用域的基本概念可以参阅javascript作用域详解一章节。

但是下面再介绍一个细节,可能不少的朋友都没有注意到,因为看到不少人在提问。

先看一个代码实例:

var num=10;
function foo(){
  console.log(num);
}
function func(){
  var num=100;
  foo();
}
func();

上面的输出结果是10,可能很多人认为是100。

他们的思路是:foo()函数中没有变量num的定义,所以向上查找,于是在func函数中找到。

其实并不是这么回事,foo()函数要去创建这个函数的作用域取值,而不是在调用它的父作用域。

回复

我来回复
  • 暂无回复内容