Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 RegExp不同的结果”;“1.7.6”;vs";V8";_Javascript_Regex_V8_Rhino - Fatal编程技术网

与“中的JavaScript RegExp不同的结果”;“1.7.6”;vs";V8";

与“中的JavaScript RegExp不同的结果”;“1.7.6”;vs";V8";,javascript,regex,v8,rhino,Javascript,Regex,V8,Rhino,目前,我发现相同的JavaScript RegExp可能会在不同的JavaScript引擎中生成不同的结果,下面是一个示例: 在Chrome V8 JS发动机中 /\x3c/.test("\x3c") --> returns true /\x3c/.test(function() { return "\x3c" }) -->returns ***false*** 在rhino1.7.6中,我键入如下命令: >java -jar js.jar Rhino 1.7.

目前,我发现相同的JavaScript RegExp可能会在不同的JavaScript引擎中生成不同的结果,下面是一个示例: 在Chrome V8 JS发动机中

/\x3c/.test("\x3c")  --> returns true

/\x3c/.test(function() {  return "\x3c"  }) -->returns ***false***
在rhino1.7.6中,我键入如下命令:

>java -jar js.jar

  Rhino 1.7.6 2015 04 15

js> /\x3c/.test(function() {  return "\x3c"  })

  true

js>
我测试了这两个:

/\x3c/.test("\x3c")  --> returns true

/\x3c/.test(function() {  return "\x3c"  }) -->returns ***true***
我想知道为什么这两个引擎产生不同的结果。我认为它们必须符合一些标准


如果我错了,请纠正我。此外,如果这是一个特殊的场合,请告诉我在这些特殊场合我是否可以告诉JS engine一些配置。

给定值
function(){return“\x3c”}

  • Chrome将其转换为字符串
    “function(){return“\x3c”}”
    ,即后跟“x3c”的文本反斜杠


  • Rhino将其转换为字符串
    “function(){return”只是为了清楚起见,您正在将函数引用传递到
    .test()中
    ,而不是调用函数的结果。您传递的函数将转换为字符串。也就是说,我认为Chrome的行为不正确。您可以显示Rhino的测试代码吗?@nhahdh,起初,我发现一个网页的行为是有线的。然后,我下载了该网页并对其进行了测试。然后,我发现这是由以下原因引起的:/\x3c/.test(function(){return“\x3c”})。为了让你们更方便,我下载了“rhino1.7.6”,并对其进行如下测试:\n>java-jar js.jar Rhino 1.7.6 2015 04 15 js>/\x3c/.test(function(){return“\x3c”})true------------------正如您所见,结果是正确的。但是,在Chrome中,结果是错误的。@nhahdh,首先,我发现网页的行为是有线的。然后,我下载了网页并对其进行了测试。然后,我发现这是由以下原因造成的:/\x3c/.test(function(){return“\x3c”})。为了让你们更容易,我下载了“rhino1.7.6”,您可以在问题中看到我的测试输入,因为我无法在此注释中键入换行:)