标签: eval

逃避Javascript的困境

我有以下内容

var id='123';

newDiv.innerHTML = "<a href=\"#\" onclick=\" TestFunction('"+id+"', false);\"></a>";
Run Code Online (Sandbox Code Playgroud)

哪个呈现<a href="#" onclick="return Testfunction('123',false);"></a>在我的HTML中.

我遇到的问题是我希望调用方法TestFunction,并在我的函数StepTwo(string,boolean)中用作字符串参数,理想情况下最终会显示在实时HTML中,如图所示......

<a href="#" onclick="StepTwo("TestFunction('123',false)",true)"></a>
Run Code Online (Sandbox Code Playgroud)

注意TestFunction在这里是一个字符串(它在StepTwo中使用eval执行).

我试图通过以下方式格式化我的JS:

newDiv.innerHTML = "<a href=\"#\" onclick=\"StepTwo(\"TestFunction('"+id+"', false);\",true)\"></a>";
Run Code Online (Sandbox Code Playgroud)

虽然这在我的IDE中看起来是正确的,但在渲染的HTML中,它仍然无法相信.

如果有人能指出我正确的方向,我将不胜感激.谢谢!

javascript eval escaping

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

在循环中分配和删除对象:eval(解析(粘贴(

我期待在循环中分配对象.我已经读过某些形式的eval(parse(东西,我需要执行此操作,但我遇到错误列表invalid textno such file or directory.下面是我试图做的一般示例代码:

x <- array(seq(1,18,by=1),dim=c(3,2,3))
for (i in 1:length(x[1,1,])) {
  eval(parse(paste(letters[i],"<-mean(x[,,",i,"])",sep="")
}
Run Code Online (Sandbox Code Playgroud)

当我完成使用这些对象时,我想删除它们(实际的对象非常大,以后会导致内存问题......)

for (i in 1:length(x[1,1,])) eval(parse(paste("rm(",letters[i],")",sep="")))
Run Code Online (Sandbox Code Playgroud)

eval(parse(paste(此脚本的两个部分都返回invalid text或的错误no such file or directory.我在使用中遗漏了什么eval(parse(?是否有更简单/更好的方法在循环中分配对象?

loops eval r object paste

1
推荐指数
4
解决办法
1万
查看次数

为什么两个分支似乎都执行?

我很困惑.这是我的代码:

use strict;
use warnings;
use Test::More;

subtest 'huh?' => sub {
    my $i = 0;
    eval {
        $i++;
    } || do {
        $i++;
    };
    is($i, 1, "only execute one branch (i: $i)");
};

&done_testing();
Run Code Online (Sandbox Code Playgroud)

这是我的测试输出(当使用ActivePerl 5.12,Mac OS X运行时):

    not ok 1 - only execute one branch (i: 2)
    #   Failed test 'only execute one branch (i: 2)'
    #   at test.pl line 14.
    #          got: '2'
    #     expected: '1'
    1..1
    # Looks like you failed 1 test of 1.
not …
Run Code Online (Sandbox Code Playgroud)

perl eval

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

从perl中的eval-ed字符串动态创建subs

我需要将数组结构中的数据结构转换为树状结构.在开始处理数据之前,我知道树的深度,但我希望保持灵活性,以便重新使用代码.

因此,我着眼于动态生成subref(从基于Moose的模块中)到阵列之间的想法.像这样(以简化的方式):

use Data::Dump qw/dump/;

sub create_tree_builder {
     my $depth = shift;
     return eval join '', 'sub { $_[0]->{$_[', 
                           join(']}->{$_[', (1..$depth)),
                          ']} = $_[',  $depth + 1 , '] }'; 
}


my $s = create_tree_builder(5);
my $tree = {};

$s->($tree, qw/one two three four five/, 'a value');

print dump $tree;

# prints
#  {
#     one => { two => { three => { four => { five => "a value" } } } },
#  }
Run Code Online (Sandbox Code Playgroud)

这为我打开了世界,我发现这个eval过程的很酷的用途 - 在参数化生成的字符串中到处都是一个函数(显然,这是一个寻找问题的解决方案). …

perl eval perl-data-structures

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

PHP Eval对象属性

是否可以简单地使用此代码...

echo $object->property1;
echo $object->property2;
echo $object->property3;
Run Code Online (Sandbox Code Playgroud)

......用这样的东西,用eval?

for ($i=0; $i<10; $i++)
    echo eval("$object->property".$i);
Run Code Online (Sandbox Code Playgroud)

谢谢.

php eval

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

在node.js中,如何以最轻量级的方式检查给定的代码字符串在语法上是否正确?

想象一下,我接受用户的一段代码,想要检查给定的字符串是否是有效的JS?仅从语法角度来看.

function checkCode(x){
// Logic

}
// returns a boolean, whether 'x' is syntactically right or wrong.
Run Code Online (Sandbox Code Playgroud)

我不想要解决方案eval,因为当给定的代码'x'在语法错误时整个nodejs进程都会遇到语法错误.

javascript syntax eval node.js

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

如何在我的函数中替换`eval`?

我非常清楚,eval在Python中使用它并不是一个好习惯.这是我的代码:

from hashlib import * # added for clarification
def get_hash(self):
        if self.hash_type in ['md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512']:
            data = eval(self.hash_type) # <--- how can I replace this?
Run Code Online (Sandbox Code Playgroud)

我听说过这个setattr功能,但老实说我不知道​​如何实现它.

是否也可以通过使用该map功能来做到这一点?

请注意,'md5', 'sha1', 'sha224'etc等是局部变量.当我eval在其中一个上使用该功能时,它们就变成了功能.

python eval map setattr

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

如何"评估""paste0"返回的结果?

似乎我永远不会得到'paste0'的返回值,以及任何被引用的字符.我是否必须使用'substr'或'gsub'来删除这些引号?

eval(paste0('1','+','1')) 
[1] "1+1" 
eval(expression(paste0('1','+','1'))) 
[1] "1+1" 
eval(expression("1+1")) 
[1] "1+1" 
eval("1+1") 
[1] "1+1" 
eval(expression(1+1)) 
[1] 2 
eval(1+1) 
[1] 2
Run Code Online (Sandbox Code Playgroud)

expression eval r paste bioconductor

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

评估数据表中的文本

我试图通过单个变量在非常大的数据表中聚合很多变量.我遇到的问题eval(parse(text=...))是因为我正在评估几个表达式而不仅仅是一个表达式.这是一个简单的例子:

library(data.table)
data(mtcars)
mtcars<-as.data.table(mtcars)

mtcars[,j=list(
  eval(parse(text='mean_mpg=mean(mpg),
             sum_mpg=sum(mpg)'))

),by=gear]

Error in parse(text = "mean_mpg=mean(mpg),\n             sum_mpg=sum(mpg)") : 
  <text>:1:19: unexpected ','
1: mean_mpg=mean(mpg),
Run Code Online (Sandbox Code Playgroud)

目标:

mtcars[,j=list(
  mean_mpg=mean(mpg),
  sum_mpg=sum(mpg)

),by=gear]
   gear mean_mpg sum_mpg
1:    4 24.53333   294.4
2:    3 16.10667   241.6
3:    5 21.38000   106.9
Run Code Online (Sandbox Code Playgroud)

我将使用它,paste但我认为更容易阅读以这种方式写出来.

非常感谢!

eval r data.table

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

异常转义Perl'eval'块

我有一个Perl脚本,可以自动从各种来源下载内容.它会在一个eval块中进行下载,alarm以便在需要太长时间时尝试超时:

eval {
    alarm(5);
    my $res = $ua->request($req);
    $status = $res->is_success;
    $rawContent = $res->content;    
    $httpCode = $res->code;
    alarm(0);       
};
Run Code Online (Sandbox Code Playgroud)

这已经工作了多年,但在做了一些系统更新后,它突然停止工作.相反,它击中的第一个源超时,我得到以下错误,程序终止:

 Alarm clock
Run Code Online (Sandbox Code Playgroud)

我做错了什么,以防止eval突然发出警报?

perl eval lwp

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