GVKun编程网logo

js eval() 解码(js eval解密)

3

在本文中,您将会了解到关于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解密)

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不同?

Angular.js:$ eval如何工作,为什么与香草eval不同?

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

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

$parse似乎由ParseProviderin 定义,in parse.js似乎定义了自己的某种微型语法(文件长900行)。

我的问题是:

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

  2. 为什么不使用普通的旧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?

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.

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

angularjs – 将ngTrueValue和ngFalseValue设置为数字

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')}}"

他们没有工作。我如何使角度处理参数作为一个数字?

你可以使用 ngChecked,如果表达式是真实的,那么将在元素上设置特殊属性“checked”
<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/eval/compile 的异同

还有一些没有说,有空补上

eval和exec有这两个区别:

  1. eval只接受一个表达式,exec可以使用具有Python语句的代码块:循环,try:except :,类和函数/方法定义等。
    a_variable =(可以放入这些括号的任何内容都是一个表达式)

  2. 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 的异同等更多相关知识的信息可以在本站进行查询。

本文标签: