jjzjj

javascript - 将 eval() 与自定义全局变量一起使用

有没有办法在调用eval()时指定要用于global的对象?(我不是在问如何进行全局eval()。)这行不通,但这说明了我想要的:varpseudoGlobal={};eval("x=12",pseudoGlobal);pseudoGlobal.x;//12重点是真正的全局绑定(bind)不受代码eval()中的隐式变量声明(即没有var关键字)的影响。至于eval.call(pseudoGlobal,"x=12")或eval.apply(pseudoGlobal,["x=12"]),一些解释器不会允许它。 最佳答案 当然,您可以用

javascript - Node.js 全局评估,抛出 ReferenceError

我正在尝试从Rhino书中学习JavaScript。我试图执行书中关于eval()的以下代码。我正在使用node.js(v0.10.29)来执行示例。vargeval=eval;//aliasingevaltogevalvarx='global';//twoglobalvariablesvary='global';functionf(){varx='local';//definealocalvariableeval('x+="changed";');//directevalsetsthelocalvariablereturnx;}functiong(){vary='local';//d

javascript ->= 和 <= 以及 JS 中的 eval 函数是否存在已知问题?

我目前正在编写一个JS规则引擎,它有时需要使用eval()函数计算bool表达式。首先我构造了一个等式:varequation="relation.relatedTrigger.previousValue"+""+relation.operator+""+"relation.value";relation.relatedTrigger.previousValue是我要比较的值。relation.operator是运算符(“==”、“!=”、”、>=)。relation.value是我要与之比较的值。然后我只需将这个字符串传递给eval函数,它就这样返回true或false:return

javascript - 不是所有的 JavaScript 函数都是构造函数吗?

我以一种奇怪的方式使用eval函数,作为构造函数。try{vary=neweval()}catch(error){console.log("caughta"+error.name+":"+error.message);}它抛出错误,caughtaTypeError:functioneval(){[nativecode]}isnotaconstructor如错误消息所示,eval是一个函数而不是构造函数。问题是,不是所有的javascript函数都充当构造函数吗? 最佳答案 并非所有函数都是构造函数。构造函数是functionvalu

javascript - Evil Eval 的替代品——关系运算符

作为输入验证的一种形式,我需要强制将像'9>6'这样的字符串计算为bool值。除了评估字符串之外,我似乎找不到解决方法。我一直听说eval的邪恶(特别是因为我正在验证表单输入),关于它可以评估任何脚本和性能问题的事实。但是....mycase有没有其他选择?(处理关系运算符)?vararr=['2'];varcheck=function(a){returnarr.every(function(x){varstring='';string+=a+x;try{returneval(string);}catch(e){returnfalse;}});};console.log(check('

javascript - eval 和 setTimeout 执行字符串代码的区别

我知道eval和setTimeout都可以接受字符串作为(1st)参数,而且我知道我最好不要使用它。我只是好奇为什么会有区别:!function(){varfoo=123;eval("alert(foo)");}();!function(){varfoo=123;setTimeout("alert(foo)",0);}();第一个可以,第二个会报错:fooisnotdefined他们是如何在幕后执行的? 最佳答案 参见referenceofsetTimeoutonMDN.Stringliteralsareevaluatedinthe

javascript - JSON.parse() 在内部使用 eval() 吗?

这个问题在这里已经有了答案:WhatisJSON.parsewrittenin/Isitopensource?(4个答案)关闭9年前。现代浏览器中的JSON.parse是否在内部使用eval()来评估和执行动态代码?因为我一直在查看DouglasCrockford的JSON库。它还在使用parse()时使用eval(),但在实际评估之前进行了预处理。如:-防止代码中出现Unicode字符。代码显示恶意。支持JSON.parse的现代浏览器是本地执行此操作还是遵循其他协议(protocol)?

javascript - 如何在没有 eval 的情况下用 javascript 编写计算器

所以,我到处搜索,但找不到这个问题的答案。我已经尝试了大约三次,并通过基本上将输入作为字符串存储在数组中,解析数字,然后打开运算符来计算整数,从而得到了一个基本的,但我有一个真的很难弄清楚链接逻辑。有没有人有什么建议?甚至可能只是伪代码?我真的不想使用eval。非常感谢 最佳答案 对于只有5个运算符(^、*、/、+、-)且没有括号的简单计算器,您可以这样做。首先,将字符串转换为数字和运算符的数组很方便。然后,我们遍历数组,按优先顺序查找每个运算符,并将运算符应用于它前后的数字。functiontokenize(s){//---Par

javascript - 在 json 对象中执行 javascript 代码?

还有吗?所以像这样:{key1:"val1",key2:"val2",some_code:"document.getElementById("someid").innerHTML='test';"}所以some_code会在没有任何用户干预的情况下执行? 最佳答案 没有。首先,您的示例不是有效的JSON。在JSONvalidator试试看.其次,JSON是一种数据交换标准,当正确解析时,其中包含一些代码的任何文本都不会被执行。继续阅读JSONsecurityissues.经验法则:不要使用JavaScripteval函数,而是使用现

Javascript eval 别名

javascript是否允许使用别名eval?以下代码的第一部分行为异常(显示1、1),但第二部分没有(显示1、2)。对ECMA脚本或mozilla文档的引用会有所帮助,但我找不到。(function(){eval('vartestVar=1');alert(testVar);vareval2=eval;eval2('vartestVar=2');alert(testVar);})();(function(){eval('vartestVar=1');alert(testVar);eval('vartestVar=2');alert(testVar);})();