gpt4 book ai didi

javascript - 为什么需要变量名 "$scope"?

转载 作者:可可西里 更新时间:2023-11-01 02:37:49 24 4
gpt4 key购买 nike

我是 Javascript 的新手(刚刚读完 Eloquent Javascript 这本书),目前正在阅读 O'Reilly 的 AngularJS。让书中的这一小段代码运行起来让我发疯了几个小时,让我陷入了兔子洞,以为我在设置环境的某个地方搞砸了。AngularJS 书籍提供的代码与我输入的代码的唯一区别是我在 TextController 函数的“$scope”中省略了“$”。放回“$”允许代码工作。

以下是我最初将其排除在外的原因:哦,'$scope' 只是函数的局部变量名。与任何其他编程语言(如 Java 或 C++)一样,因为此参数只是一个局部变量,所以我可以随意命名它,因为传递给函数的任何参数都将按值传递。

请纠正我的推理并解释为什么参数的名称必须是“$scope”。

<!doctype html>
<html ng-app>

<body ng-controller="TextController">

<p>{{someText}}</p>

<script src="angular.min.js"></script>

<script>
function TextController($scope) {
$scope.someText = 'You have started your journey.';
}
</script>

</body>

</html>

最佳答案

这由 Angular 注入(inject)器处理。

http://docs.angularjs.org/api/auto/service/ $喷油器

In JavaScript calling toString() on a function returns the function definition. The definition can then be parsed and the function arguments can be extracted. NOTE: This does not work with minification, and obfuscation tools since these tools change the argument names.

http://docs.angularjs.org/guide/di

Given a function the injector can infer the names of the service to inject by examining the function declaration and extracting the parameter names. In the above example $scope, and greeter are two services which need to be injected into the function.

关于javascript - 为什么需要变量名 "$scope"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702980/

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