Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript评估_Javascript_Eval - Fatal编程技术网

JavaScript评估

JavaScript评估,javascript,eval,Javascript,Eval,为什么这个电话不响 它与“Summer”中的引号有关吗?额外的括号是错误的,这是正确的: 外括号在句法上没有意义。试试这个: eval('caption="Summer";alert(caption)'); Chrome控制台: eval('(caption="Summer";alert(caption))') SyntaxError: Unexpected token ; 这项工作: eval('caption="Summer"; alert(caption)') 要做到这一点并避免语法

为什么这个电话不响


它与“Summer”中的引号有关吗?

额外的括号是错误的,这是正确的:

外括号在句法上没有意义。试试这个:

eval('caption="Summer";alert(caption)');
Chrome控制台:

eval('(caption="Summer";alert(caption))')
SyntaxError: Unexpected token ;
这项工作:

eval('caption="Summer"; alert(caption)')

要做到这一点并避免语法问题,更好的方法是执行以下操作,


eval(function(){var x=“test”;alert(x)}())

为什么引号中的所有内容都有括号?如果要对表达式中的语句进行排序,请使用
运算符:
eval('(caption=“Summer”,alert(caption))正确,括号(分组运算符)只能用于计算一个表达式,更多信息:@CMS No,这是错误的。只要每个表达式只返回一个值,分组运算符就可以计算无限表达式(由逗号运算符分隔)。然后,分组运算符将返回最后返回的值,例如
(警报(“foo”)、警报(“bar”)、window.foo=“bar”、1、2、3)
将计算所有分组表达式,但仅返回
3
。因此(@Aistina)正确的答案是,偏执词中的分号没有语法意义:
eval('(caption=“Summer”,alert(caption))
@headacheCoder,表达式将在您的示例中进行计算,但最后,在最高级别(在分组运算符被计算的级别)语法上,它只是一个表达式,逗号运算符允许这样做,您可以在此处检查其语法:(这是一个递归产品)您可以在下面的解析器中尝试您的示例:您将看到括号在这个级别上只包含一个表达式标记。只有当要评估的代码作为字符串从某些源(例如ajax调用或甚至用户输入)提供时,Eval才有意义。但是,如果已经将代码作为代码,则不需要eval。对吗?
eval('caption="Summer";alert(caption)');
eval('(caption="Summer";alert(caption))')
SyntaxError: Unexpected token ;
eval('caption="Summer"; alert(caption)')