加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 09:15:06 所属栏目:安全 来源:网络整理
导读:我很好奇$ scope,你经常在指令中看到,所以我检出了源代码,并在rootScope.js中找到以下内容: $eval: function(expr,locals) { return $parse(expr)(this,locals); }, $ parse似乎是由parseProvider在parse.js中定义的,它似乎定义了一些它自己的小语法(该
我很好奇$ 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.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读