gpt4 book ai didi

angularjs - Angular.js : How does $eval work and why is it different from vanilla eval?

转载 作者:行者123 更新时间:2023-12-03 04:22:48 24 4
gpt4 key购买 nike

我对指令中经常看到的 $scope.$eval 感到好奇,因此我检查了源代码并在 rootScope.js 中找到了以下内容:

  $eval: function(expr, locals) {
return $parse(expr)(this, locals);
},

$parse 似乎是由 parse.js 中的 ParseProvider 定义的,它似乎定义了自己的某种迷你语法(该文件有 900 行长)。

我的问题是:

  1. $eval 到底在做什么?为什么它需要自己的迷你解析语言?

  2. 为什么不使用普通的旧式 JavaScript eval

最佳答案

$eval$parse 不评估 JavaScript;他们评估 AngularJS expressions 。链接的文档解释了表达式和 JavaScript 之间的差异。

问:$eval 到底在做什么?为什么它需要自己的迷你解析语言?

来自文档:

Expressions are JavaScript-like code snippets that are usually placed in bindings such as {{ expression }}. Expressions are processed by $parse service.

它是一种类似于 JavaScript 的迷你语言,它限制了您可以运行的内容(例如,没有控制流语句,三元运算符除外),并添加了一些 AngularJS 的优点(例如过滤器)。

问:为什么不使用普通的旧式 javascript“eval”?

因为它实际上并没有评估 JavaScript。正如文档所说:

If ... you do want to run arbitrary JavaScript code, you should make it a controller method and call the method. If you want to eval() an angular expression from JavaScript, use the $eval() method.

上面链接的文档包含更多信息。

关于angularjs - Angular.js : How does $eval work and why is it different from vanilla eval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15671471/

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