我正在使用一些框架&甚至为了我自己的目的写了一些图书馆。我现在正致力于AngularJs路由器的实现......再次看看DI的角度:
function
。$注入很久以来我一直在使用第一种语法。现在在测试我的路由器时,我想看看两种语法和如何处理它的行为不同,但是......
module.controller(function SampleController()
{
});
// Since it's and `invokelater...` function which is called right away,
SampleController.$inject = [/** my component dependencies **/]
我面对时看到我的脸:
ReferenceError:未定义SampleController
我认为这是不洁净的:
function SampleController()
{
}
SampleController.$inject = [];
moddule.$inject = [];
我知道它不起作用。 为什么? - 这是我的问题。
我们接受过module
,class
,method
/ functions
,某些for
循环,if
... {{ 1}}创建新范围。
我从未读过类似的内容:
函数的参数在各自的范围内进行评估
谢谢!
答案 0 :(得分:3)
命名函数表达式只在自己的作用域中创建一个匹配变量(这对于递归调用函数很有用)。
它们不会在包含它们的函数范围内创建任何内容。
当您将其作为函数参数传递时,您传递给它的变量将作用于函数调用。即function function_you_pass_the_function_to(someFunction) { }
将someFunction
变量范围限定为自身。