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)')