最近,在Developer Tool中使用JavaScript,我发现了一个奇怪的功能。 Chrome接受开头括号与操作符(加号,减号)之间的任何代码和带闭括号的操作符并执行它,如下所示:
我在其他浏览器中找不到此行为,仅在Chrome中。
也许它是一个功能,但它为什么以及如何工作,是否会成为JavaScript引擎的问题?
答案 0 :(得分:6)
这是chrome评估输入的方式:
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
// your code here...
}
一旦您的输入为}{
它变成了
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {}{} // indefined
下一个输入}-+{
变
undefined -+ {} // NaN
等等。
答案 1 :(得分:5)
这是因为Chrome以下列结构包装您在控制台中输入的代码:
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
// Your code
}
因此,当您输入} 10 {
之类的内容时,代码评估为:
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
} 10 {
}
是空with
块,数字和空结构块。
__commandLineAPI
是包含Chrome Command Line API的内部对象。