Chrome Developer Tool中JavaScript的奇怪行为

Ale*_*ich 8 javascript google-chrome v8 google-chrome-devtools

最近,在Developer Tool中使用JavaScript,我发现了一个奇怪的功能.Chrome接受开头括号与操作符(加号,减号)之间的任何代码和带闭括号的操作符并执行它,如下所示: 在此输入图像描述

我没有在其他浏览器中找到此行为,仅在Chrome中.

也许它是一个功能,但它为什么以及如何工作,它是JavaScript引擎的问题吗?

Vas*_*hau 6

这是chrome评估输入的方式:

with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
 // your code here...
}
Run Code Online (Sandbox Code Playgroud)

所以一旦你输入}{ 它就变成了

with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {}{} // indefined
Run Code Online (Sandbox Code Playgroud)

下一个输入}-+{ 变为

undefined -+ {} // NaN
Run Code Online (Sandbox Code Playgroud)

等等.


Iva*_*lov 5

这是因为Chrome在以下构造中包装您在控制台中输入的代码:

with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
  // Your code
}
Run Code Online (Sandbox Code Playgroud)

因此,当您输入类似内容时} 10 {,代码评估为:

with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
  } 10 {
}
Run Code Online (Sandbox Code Playgroud)

这是空with块,数字和空结构块.

__commandLineAPI是包含Chrome命令行API的内部对象.