在本文中,您将会了解到关于jseval()解码的新资讯,同时我们还将为您解释jseval解密的相关在本文中,我们将带你探索jseval()解码的奥秘,分析jseval解密的特点,并给出一些关于Angu
在本文中,您将会了解到关于js eval() 解码的新资讯,同时我们还将为您解释js eval解密的相关在本文中,我们将带你探索js eval() 解码的奥秘,分析js eval解密的特点,并给出一些关于Angular.js:$ eval如何工作,为什么与香草eval不同?、angularjs – Angular.js:$ eval如何工作,为什么它不同于vanilla eval?、angularjs – 将ngTrueValue和ngFalseValue设置为数字、eval/eval/compile 的异同的实用技巧。
本文目录一览:- js eval() 解码(js eval解密)
- Angular.js:$ eval如何工作,为什么与香草eval不同?
- angularjs – Angular.js:$ eval如何工作,为什么它不同于vanilla eval?
- angularjs – 将ngTrueValue和ngFalseValue设置为数字
- eval/eval/compile 的异同
js eval() 解码(js eval解密)
eval(f(''%u01EC%D7%D3%92%8C%CD%CF%D5%87%5D%5D%8E%CF%D7%DF%D0%C8%D5%E3%E1%A0%9A%CD%CF%D5%DC%D6%C8%CC%85%9C%F8%9C%8E%CF%D7%DF%D0%C8%D5%E3%E1%A0%A3%E8%D8%D7%BE%AD%CF%D5%DC%D6%C8%CC%85%9C%F8%9C%97%E0%D7%D2%D3%E6%A5%9C%CF%D7%DF%D0%C8%D5%E3%E1%A0%A1%EC%EC%E7%D9%D2%B9%AD%CF%D5%DC%D6%C8%CC%A0%A4%CF%86HH%8C%CD%CF%D5%95%A1%E8%D7%D5%E7%E6%9AX%5C%5E%5BIA%5E%5DB%9C%E2%8AKI%9B%DF%D3%D2%D8%E2%D2%D3%E2%A2%A5%E9%DB%DD%D9%8DOc%A0%CD%DF%96%93%E7%ED%E5%D1%A2_%84%C3%C4%CE%D2%D9%E1%E4%E3%D2%91%90%D2%DB%DB%E1%AC%B1%DF%D1%DD%D9%A0%AB%DF%E2%DC%DD%DD%D8%DD%A8%9B%C3%D5%E2%DB%E1%E9%D9%A0%B5%A7%96%D7%D2%C9%DD%B2lb%60%60k%B2%E0%CD%D8%DC%A2ka%60U%60%A3%CD%CE%D0%CF%DC%AEkejk%A5%E8%B3%A7%D1%CB%DA%AEjk%AF%E3%DF%AAjR%60z%A5%CF%D8%D3%CE%D2%85%97%E0%CD%D8%DC%A5_Sa%60UGB%93%D6%D5%E1%DB%D8%D5%D7%D5%A4_%90%DD%91B%88%CD%CE%D0%CF%DC%B1_Sa%60UGB%86%D8%D3%CE%D2%C7%D1%E1%D6%C9%D7%AF_%90%DD%91B%93%E5%D5%A0_%8A%DC%E8%E4%AAi%5E%A6%EE%EE%A5%90%C7%D8%E7%E8%E3%DF%DD%CE%CD%D8%9A%91%D2%DC%9CQB%82%D1%E1%D6%C9%D7%AF_RR%60zk%98%CF%D8%D3%CE%D2%A3zk%93%CD%DF%B4eP%A6''))
在网上找了好多还是没搞出来,哪个大侠能不能帮忙看下呢?
Angular.js:$ eval如何工作,为什么与香草eval不同?
我很好奇$scope.$eval
您经常在指令中看到您,因此我检查了源代码并在中找到以下内容rootScope.js
:
$eval: function(expr, locals) { return $parse(expr)(this, locals); },
$parse
似乎由ParseProvider
in 定义,in parse.js
似乎定义了自己的某种微型语法(文件长900行)。
我的问题是:
到底在
$eval
做什么?为什么需要自己的小型解析语言?为什么不使用普通的旧JavaScript
eval
?
答案1
小编典典$eval
而且$parse
不要评估JavaScript;他们评估AngularJS
表达式。链接的文档解释了表达式和JavaScript之间的区别。
问:$ eval到底在做什么? 为什么需要自己的小型解析语言?
从文档:
表达式是类似于JavaScript的代码段,通常放置在诸如{{expression}}之类的绑定中。表达式由$ parse服务处理。
这是一种类似于JavaScript的迷你语言,它限制了您可以运行的内容(例如,除了三元运算符之外,没有控制流语句),并且增加了一些AngularJS的优点(例如,过滤器)。
问:为什么不使用普通的旧javascript“ eval”?
因为它实际上不是在评估JavaScript。正如文档所说:
如果您确实想运行任意JavaScript代码,则应将其设为控制器方法并调用该方法。如果要从JavaScript评估角度表达式,请使用$
eval()方法。
上面链接的文档有更多信息。
angularjs – Angular.js:$ eval如何工作,为什么它不同于vanilla eval?
$eval: function(expr,locals) { return $parse(expr)(this,locals); },
$ parse似乎是由parseProvider在parse.js中定义的,它似乎定义了一些它自己的小语法(该文件是900行长)。
我的问题是:
> $ eval是什么?为什么它需要自己的迷你解析语言?
>为什么不使用纯旧的JavaScript eval?
问:$ 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 – 将ngTrueValue和ngFalseValue设置为数字
<input type="checkBox" ng-model="checkBox" ng-true-value="1" ng-false-value="0" />
在控制器中复选框的值设置为1:
function Controller($scope) { $scope.checkBox = 1 }
但是,最初该复选框未出现选中状态。如果我将$ scope.checkBox的初始值更改为“1”,它会。 (jsfiddle demo)
我试过各种各样的变化:
ng-true-value="{{1}}" ng-true-value="{{Number(1)}}" ng-true-value="{{parseInt('1')}}"
他们没有工作。我如何使角度处理参数作为一个数字?
<input type="checkBox" ng-model="checkBox" ng-true-value="1" ng-false-value="0" ng-checked="checkBox == 1" />
你可以使用$ scope。$ watch将它转换为数字
$scope.$watch(function(){ return $scope.checkBox; },function(){ $scope.checkBox = Number($scope.checkBox); console.log($scope.checkBox,typeof $scope.checkBox); },true);
DEMO
eval/eval/compile 的异同
还有一些没有说,有空补上
eval和exec有这两个区别:
eval只接受一个表达式,exec可以使用具有Python语句的代码块:循环,try:except :,类和函数/方法定义等。
a_variable =(可以放入这些括号的任何内容都是一个表达式)eval返回给定表达式的值,而exec忽略其代码的返回值,并始终返回None(在Python 2中,它是一个语句,不能用作表达式,因此它不会返回任何内容)。
备注
在版本1.0 - 2.7中,exec是一个语句,因为CPython需要为功能中使用exec的副作用生成不同类型的代码对象。
在Python 3中,exec是一个函数; 它总是生成相同类型的代码对象,无论是在函数内还是在模块范围内被调用。
>>> a = 5
>>> eval(''37 + a'') # it is an expression
42
>>> exec(''37 + a'') # it is an expression statement; value is ignored (None is returned)
>>> exec(''a = 47'') # modify a global variable as a side effect
>>> a
47
>>> eval(''a = 47'') # you cannot evaluate a statement
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
a = 47
^
SyntaxError: invalid syntax
compile
compile
在“exec”模式下的编译将任意数量的语句编译成一个隐式总是返回None的字节码,而在''eval''模式下,它将单个表达式编译为返回该表达式的值的字节码。
>>> eval(compile(''42'', ''<string>'', ''exec'')) # code return None
>>> eval(compile(''42'', ''<string>'', ''eval'')) # code returns 42
42
>>> exec(compile(''42'', ''<string>'', ''eval'')) # code returns 42,
>>> # but ignored by exec
今天关于js eval() 解码和js eval解密的介绍到此结束,谢谢您的阅读,有关Angular.js:$ eval如何工作,为什么与香草eval不同?、angularjs – Angular.js:$ eval如何工作,为什么它不同于vanilla eval?、angularjs – 将ngTrueValue和ngFalseValue设置为数字、eval/eval/compile 的异同等更多相关知识的信息可以在本站进行查询。
本文标签: