标签: eval

在 Eval 中设置变量 (JavaScript)

我正在编写一个 GreaseMonkey 脚本(使用 JQuery),并且我需要一些由原始页面中的脚本设置的变量,如下所示:

<script type="text/javascript"> 
    var rData = {"20982211":[1,0,1],"20981187":[8,0,4]};
</script>
Run Code Online (Sandbox Code Playgroud)

我从另一个页面获取这个元素并尝试评估它,奇怪的是这不起作用:

$.get(link_url, null, function(data) {
   alert("1:" + rData);
   eval($(data).find("script").text());
   alert("2:" + rData);
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我运行脚本时,它可以在 firebug 控制台上工作(我只是在没有 .get 的情况下直接在目标页面上尝试了 eval),但它没有。它在两个警报中都给了我“null”。

有任何想法吗?

javascript ajax jquery greasemonkey eval

2
推荐指数
1
解决办法
5309
查看次数

使用 JavaScript 检查 JavaScript 语法?

像我这样的突击队员如何使用一些 JavaScript 内置方法(如果有!)或任何其他可能的方式检查输入的代码是否是有效的 JavaScript 源?(类似于 NetBeans、Eclipse 等各种 IDE 中的预解析器)?

我必须检查代码是否正常,然后 window.eval()-it 到当前文档实例。

javascript eval syntax-checking

2
推荐指数
1
解决办法
4181
查看次数

DBI:在 eval 中引发错误

这个问题参考了池上的评论:

[...] But if you're going to put an eval around every statement, just use RaiseError => 0. [...]
Run Code Online (Sandbox Code Playgroud)

在这个线程中。

如果我在这种情况下这样RaiseError做,我会得到什么?0

#!/usr/bin/env perl
use warnings;
use 5.10.1;
use DBI;

my $db = 'my_test_sqlite_db.sqlite';
open my $fh, '>', $db or die $!;
close $fh or die $!;

my ( $dbh, $sth );
eval {
    $dbh = DBI->connect( "DBI:SQLite:dbname=$db", "", "", {} );
};
if ( $@ ) { print $@ };

my $table = 'my_sqlite_table';

say …
Run Code Online (Sandbox Code Playgroud)

perl eval exception dbi raiseerror

2
推荐指数
1
解决办法
5769
查看次数

eval() 函数如何改变字典?

eval() 如何改变字典?这是一个例子:创建一个字典 -> print -> eval -> print

>>> a={'a':'a','b':'b'}
>>> print(a)
{'a': 'a', 'b': 'b'}
>>> eval('a == "a"',a)
True
>>> print(a)
{'a': 'a', '__builtins__': {'bytearray': <class 'bytearray'>, 'IndexError': <class 'IndexError'>, 'all': <built-in function all>, 'help': Type help() for interactive help, or help(object) for help about object., 'vars': <built-in function vars>, 'SyntaxError': <class 'SyntaxError'>, 'UnicodeDecodeError': <class 'UnicodeDecodeError'>, 'memoryview': <class 'memoryview'>, 'isinstance': <built-in function isinstance>, '__build_class__': <built-in function __build_class__>, 'copyright': Copyright (c) 2001-2012 Python Software Foundation.
All Rights Reserved.
...
Run Code Online (Sandbox Code Playgroud)

python dictionary eval python-3.x

2
推荐指数
1
解决办法
4600
查看次数

用户输入带有变量声明的 JavaScript eval

作为家庭作业的一部分,我试图在浏览器环境中实现一个类似于 Firebug 中可用的 JavaScript 控制台。从我收集到的情况来看,eval()这似乎是最简单的方法。然而,即使是非常基本的用户输入,我的代码也会遇到一些问题。例如:

\n\n
var number = 5;\n
Run Code Online (Sandbox Code Playgroud)\n\n

导致语法错误而不仅仅是评估undefined像 Firebug 中那样进行评估。因此,我似乎根本无法在 eval 字符串内声明变量。如果我做一些更简单的事情,例如:

\n\n
3 + 4 * Math.PI\n
Run Code Online (Sandbox Code Playgroud)\n\n

它工作正常。我试图找到一个有人使用的例子eval()在包含变量声明的字符串上使用的示例,但我似乎找不到任何人这样做。

\n\n

在将用户输入编译成新字符串之前,我是否需要使用正则表达式完全解析用户输入eval()

\n\n

能把eval()分号理解为换行符吗?我也找不到使用这些的人。

\n\n
function runMiniFirebug() {\n    var userInput = document.getElementById("user-input").value;\n    try {\n        var userOutput = eval(\'(\' + userInput + \')\');\n        document.getElementById("js-output").innerHTML += \'<p class="input">>>>\' + userInput + \'<p>\';\n        document.getElementById("js-output").innerHTML += \'<p class="ouput">\' + userOutput + \'<p>\';\n    }\n    catch(error) {\n        document.getElementById("js-output").innerHTML += \'<p class="input">>>>\' + …
Run Code Online (Sandbox Code Playgroud)

javascript firebug command-line eval

2
推荐指数
1
解决办法
1488
查看次数

JavaScript 中最简单的自修改函数?

我想研究和摆弄自修改函数,并知道 JavaScript 具有eval和其他有趣的反射特性,例如使函数从内部打印其主体,我想我想做一些自修改函数测试使用 JavaScript。

我想要一个简单的函数,当被调用时,它会根据任何规则修改自身。

就像也许某个函数可以先执行一个简单的操作console.log,然后下次调用它时它就会执行此操作alert。这显然可以通过 来实现if,但我在这里寻找的是实际的物理函数首先应该如下所示:

function selfm()
{
    console.log('hello')
    // + modify self here somehow
}
Run Code Online (Sandbox Code Playgroud)

第一次通话后:

function selfm()
{
    alert('hello')
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能以最简单的形式实现这种行为?

javascript reflection eval function self-modifying

2
推荐指数
1
解决办法
2697
查看次数

在 Makefile 配方中使用 eval 设置变量

我正在查看另一个堆栈溢出问题,他们正在使用看起来像是 makefile 的未记录行为...如果我有以下 Makefile:

X=X 

all:
    @echo $@: $(X)
    $(eval X=Y)
    @echo $@ part2: $(X)

all2:
    @echo $@: $(X)
Run Code Online (Sandbox Code Playgroud)

然后我运行:

~> make all2
all2: X
~> make all all2
running all
all: X
all part2: Y
all2: Y
Run Code Online (Sandbox Code Playgroud)

我本来希望$(eval X=Y)在 Makefile 解析时展开,并将shell变量设置XY配方的该行(即什么都不做)。相反,它似乎在运行配方时进行评估all,另外,它似乎设置了 make 变量。我浏览了 make 手册页和在线手册,但找不到任何描述此行为的内容(我正在使用 GNU Make 4.0)。有人可以向我指出一些描述这一点的文档,或者解释一下发生了什么吗?

makefile eval

2
推荐指数
1
解决办法
6579
查看次数

Python如何从包含参数的字符串调用类方法

我有以下代码。评估命令变量及其包含的参数的最佳方法是什么。

这是一个人为的例子,但却是解释我想要在更大范围内做的事情的最简单方法。

class Job():
  def random_number(self, start, end, prec=0):
    number = round(random.uniform(start,end),prec)
    if(prec == 0):
      return int(number)
    return number

  def run(self, command):
    #command = "self.random_number(1,10,0)"
    #**************
    # What would be the best way to 'eval' the content of the 'command' variable and the parameters it contains?
    #**************

job = Job()
job.run("self.random_number(1,10,0)")
Run Code Online (Sandbox Code Playgroud)

python eval

2
推荐指数
1
解决办法
658
查看次数

Python:如何让 eval() 看到局部变量?

我有以下几点:

x = [1,2,3,4,5]
def foo(lbd:str, value):
    ret_val = eval(lbd, globals(), locals())
    print(ret_val)
Run Code Online (Sandbox Code Playgroud)

在此调用中使用 'value' 变量成功:

>>> foo("[i for i in value]",x)
            
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

但是这个失败了:

>>> foo(r"any([x in value for x in {'',0,None,'0'}])", x)
            
Traceback (most recent call last):
  File "<pyshell#171>", line 1, in <module>
    foo(r"any([x in value for x in {'',0,None,'0'}])", x)
  File "<pyshell#165>", line 2, in foo
    ret_val = eval(lbd, globals(), locals())
  File "<string>", line 1, in <module>
  File "<string>", line 1, in <listcomp>
NameError: …
Run Code Online (Sandbox Code Playgroud)

python eval local-variables python-3.x

2
推荐指数
1
解决办法
70
查看次数

使用 dplyr 进行 eval 解析的替代方法

有没有办法在不使用 eval(parse()) 的情况下使用字符串作为参数进行过滤?

library("dplyr")

subset <- "carb == 4"
subset_df <- mtcars %>% filter(eval(parse(text = subset)))
Run Code Online (Sandbox Code Playgroud)

eval r dplyr tidyverse

2
推荐指数
1
解决办法
80
查看次数