在全局上下文中,我用这样的代码调用eval()函数:
eval( (new ActiveXObject("Scripting.FileSystemObject")).OpenTextFile("/BaseScripts/sft.js", 1).ReadAll(), );
之后,"sft.js“脚本文件中的所有局部变量、函数、对象都将添加到我的全局上下文中。但是,如果在本地函数中执行相同的eval调用:
function run_eval(path) {
eval( (new ActiveXObject("Scripting.FileSys
假设我有以下对象:
Variables.settings.backend.url = 'http://localhost';
我要做的是测试url是否可用,并对以下内容进行测试:
if ('settings' in Variables && 'backend' in Variables.settings && 'url' in Variables.settings.backend) {
// true
}
这是相当麻烦的。
如果这是PHP,我可以这样做
if (!empty($variables
<div id='dgok' data-fn="delbanner('banners')">OK</div>
js
$('#dgok').click(function(){
let fn = $(this).attr('data-fn');
console.log(fn) // delbanner('banners')
fn();
});
错误:
Uncaught TypeError: fn is not a function
如何在此场景中执行del
所以我读过,看过这个简单的。
我的问题是,如果存储在字符串中的JScript代码需要参数怎么办?我怎么通过它?
第一次尝试:
var jsStr = "WScript.Echo(WScript.Arguments[0]);";
eval(jsStr);
第二次尝试:
var F = new Function(jsStr);
F.call(this,'test str');
但这次失败的尝试失败了。
注意:
让我们假设I对jsStr值没有控制。因此,从根本上说,在这个时候,重新格式化是不可能的。
当我执行eval函数时,它并没有将我的json响应转换成一个对象,它只是破坏了我的代码。我已经尝试过使用prototype.js和JSON2.js进行解析,但都无济于事,请解释一下我在这里做错了什么?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Inventory Management</title>
当jsr-223是对象的属性时,为什么不计算字符串?
只有一个字符串属性的简单类:
public class EvalJSR223Bean {
public String evalFnt;
}
使用文本和对象的简单求值,当使用对象时,Rhino不执行eval。但是如果我将空的javascript字符串连接到对象属性,Rhino eval。
public static void main(String[] args) throws ScriptException {
ScriptEngineManager manager = new ScriptEngineManager();
是否可以在调用eval之前检查字符串是否为有效的函数名?
var fnString = $('#fnInput').val()
// is there any way I can check if fnString is a valid function name
// before calling the following line:
eval(fnString + '()');
我理解使用eval()的风险,这是一个私人项目,不会对公众开放。
我正在尝试构建一个按需加载脚本的函数。这是我当前的代码: function loadScript(src, name = null)
{
var dfd = jQuery.Deferred();
if (name === null) {
name = src.split(/\\|\//); // split by folder separator
name = name[(name.length - 1)].split('.'); // catch last index & split by extension
下面的脚本试图测试Utility.Method.PageInit()是否存在;
页面对象是动态传入的,事件参数也是如此,所以我实际上并不知道它们是什么,所以我需要测试动态函数的存在(如果您理解正确的话)。
var key = page.attr('id');
var funcToCall = key + '.Method.' + event;
//check if function exists, if it doesn't return, (guard statement)
if (typeof (eval(funcToCall)) != '
让我们认为我们有这个变量
var x=1;
var y=2;
var a = "x>y";
有什么方法可以让人觉得;
(if(a){RUN JS CODE;})
。因为这样它就不会得到布尔表达式(x>y),它将得到一串字符(字符串),我知道我可以分离:
左表达式
布尔运算符
右边的表象
但这是客户端设备的额外工作(因为是javascript)。
有没有办法像“文字字符串”和“布尔表达式”一样?
我有一个已经为我在其他地方创建的代码字符串,使用Blockly。在我看来,它似乎是正确的,当我将它直接回音到一页时:
function someName(){
//some code
}
//more code
someName();
但是,当我对其调用eval时,函数调用本身就不工作了。它声称该函数没有定义。除了函数声明之外,所有东西都正常工作。代码字符串本身已经设置好了,除非我做了大量的解析,否则我无法更改它。是否有更简单的方法来声明这些函数,以便代码可以调用它们?
测试用例(我实际使用的):
function test(){
alert("This is a te
我想知道在本地作用域中是否存在一个变量,该变量以给定的名称作为字符串。有办法这样做吗?:
var name = 'myVariable';
function test(myVariable) {
//CHECK HERE if there is a locally scoped variable with the same name
//as the value of 'name'
}