您的位置:首页 > Web前端 > JavaScript

javascript函数作用域和嵌套调用关系

2016-06-07 10:04 351 查看
JavaScript 的作用域是通过函数来定义的,在一个函数中定义的变量只对这个函数内部可见,我们称为函数作用域。

特别注意:JavaScript 的作用域完全是由函数来决定的, if 、 for 语句中的花括号不是独立的作用域。

在函数中引用一个变时,JavaScript 会先搜索当前函数作用域,或者称为“局部作用域”,如果没有找到则搜索其上层作用域,一直到全局作用域。

函数作用域的嵌套关系是定义时决定的,而不是调用时决定的,也就

是说,JavaScript 的作用域是静态作用域,又叫词法作用域,这是因为作用域的嵌套关系可以在语法分析时确定,而不必等到运行时确定。下面的例子说明了这一切:

var scope = ‘top’;

var f1 = function() {

console.log(scope);

};

f1(); // 输出 top

var f2 = function() {

var scope = ‘f2’;

f1();

};

f2(); // 输出 top

这个例子中,通过 f2 调用的 f1 在查找 scope 定义时,找到的是父作用域中定义

的 scope 变量,而不是 f2 中定义的 scope 变量。这说明了作用域的嵌套关系不是在调用

时确定的,而是在定义时确定的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 函数