gpt4 book ai didi

javascript - javascript命名函数的范围是什么,作为参数传递

转载 作者:行者123 更新时间:2023-11-28 18:36:46 25 4
gpt4 key购买 nike

我使用过一些框架,甚至为自己的目的编写了一些库。我现在致力于 AngularJs 路由器的实现...并再次查看 Angular 的 DI:

  1. [...字符串、函数]
  2. 函数.$注入(inject)

长期以来我一直使用第一种语法。现在,在测试我的路由器时,我想看看两种语法是否不同的行为以及如何处理这个问题,但是......

第一手资料

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 = [];

最后

我知道这行不通。 为什么? - 这是我的问题。

为什么?

我们被告知模块方法/函数,一些for 循环,if...else 创建新作用域。

我从来没有读过这样的东西:

function's parameters are evaluated in their own scope

请告诉我

谢谢!

最佳答案

命名函数表达式仅在其自己的范围内创建匹配变量(这对于递归调用函数很有用)。

它们在保存它们的函数范围内没有创建任何内容。

当您将其作为函数参数传递时,您传递给它的变量的作用域为函数调用。即 function function_you_pass_the_function_to(someFunction) { }someFunction 变量的范围限定为自身。

关于javascript - javascript命名函数的范围是什么,作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36941769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com