作为参数传递的 javascript 命名函数的范围是什么
What's the scope of javascript named function, passed as parameter
我使用过一些框架,甚至为我自己的目的编写了一些库。我现在正在实施 AngularJs 路由器...并再次查看 angular:
的 DI
- [...字符串,函数]
function
.$注入
长期以来我一直在使用第一种语法。现在在测试我的路由器时,我想看看两种语法是否不同以及如何处理它的行为,但是...
第一手资料
module.controller(function SampleController()
{
});
// Since it's and `invokelater...` function which is called right away,
SampleController.$inject = [/** my component dependencies **/]
见我面时:
ReferenceError: SampleController is not defined
另一只手
我觉得这样写不干净:
function SampleController()
{
}
SampleController.$inject = [];
moddule.$inject = [];
所以终于
我知道这行不通。 为什么? - 这是我的问题。
为什么?
我们被教导 module
、class
、method
/functions
、一些 for
循环、if
... else
创建新范围。
我从来没有读过类似的东西:
function's parameters are evaluated in their own scope
请告诉我
谢谢!
命名函数表达式只在它们自己的范围内创建一个匹配的变量(这对于递归调用函数很有用)。
它们在包含它们的函数范围内不创建任何东西。
当您将它作为函数参数传递时,您传递给它的变量的作用域就是函数调用。即 function function_you_pass_the_function_to(someFunction) { }
将 someFunction
变量限定为自身。
我使用过一些框架,甚至为我自己的目的编写了一些库。我现在正在实施 AngularJs 路由器...并再次查看 angular:
的 DI- [...字符串,函数]
function
.$注入
长期以来我一直在使用第一种语法。现在在测试我的路由器时,我想看看两种语法是否不同以及如何处理它的行为,但是...
第一手资料
module.controller(function SampleController()
{
});
// Since it's and `invokelater...` function which is called right away,
SampleController.$inject = [/** my component dependencies **/]
见我面时:
ReferenceError: SampleController is not defined
另一只手
我觉得这样写不干净:
function SampleController()
{
}
SampleController.$inject = [];
moddule.$inject = [];
所以终于
我知道这行不通。 为什么? - 这是我的问题。
为什么?
我们被教导 module
、class
、method
/functions
、一些 for
循环、if
... else
创建新范围。
我从来没有读过类似的东西:
function's parameters are evaluated in their own scope
请告诉我
谢谢!
命名函数表达式只在它们自己的范围内创建一个匹配的变量(这对于递归调用函数很有用)。
它们在包含它们的函数范围内不创建任何东西。
当您将它作为函数参数传递时,您传递给它的变量的作用域就是函数调用。即 function function_you_pass_the_function_to(someFunction) { }
将 someFunction
变量限定为自身。