angularjs – Angular.js:$ eval如何工作,为什么它不同于vanilla eval?

前端之家收集整理的这篇文章主要介绍了angularjs – Angular.js:$ eval如何工作,为什么它不同于vanilla eval?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我很好奇$ scope,你经常在指令中看到,所以我检出了源代码,并在rootScope.js中找到以下内容
$eval: function(expr,locals) {
    return $parse(expr)(this,locals);
  },

$ parse似乎是由parseProvider在parse.js中定义的,它似乎定义了一些它自己的小语法(该文件是900行长)。

我的问题是:

> $ eval是什么?为什么它需要自己的迷你解析语言?
>为什么不使用纯旧的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.

链接到上面的文档有更多的信息。

原文链接:https://www.f2er.com/angularjs/147233.html

猜你在找的Angularjs相关文章