JavaScript作用域,函数中的参数与函数中的局部变量相同?

时间:2014-01-24 18:39:14

标签: javascript

当我有一个函数时,传入的参数是否与函数内部的回调方法具有相同的范围?也就是说,在以下函数中xx和yy都有效吗?

onMyFunction: function(component) {
  var myLocal = 7;
  my.load({
    callbackfunction: function() {
       // can I access both
       var xx = component;
       var yy = myLocal;
    }
  });

3 个答案:

答案 0 :(得分:4)

是的,它们都是有效的......这就是闭包的目的......

答案 1 :(得分:1)

参数的作用域与局部变量完全相同,并且所有意图和目的都与局部变量完全相同。

实际上,当执行函数时,参数和变量存储在相同的内部“映射”中,因此在运行期间,甚至不可能区分参数和变量。至少according to the specification

答案 2 :(得分:0)

是的,javascript主要通过函数确定范围,因此功能块中可用的所有引用也可用于其中声明的任何函数或块。

如果您对这个问题感兴趣,我建议 https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/README.md 特别是关于功能/块范围以及范围闭包的部分。

:)