Ale*_*ich 8 javascript google-chrome v8 google-chrome-devtools
最近,在Developer Tool中使用JavaScript,我发现了一个奇怪的功能.Chrome接受开头括号与操作符(加号,减号)之间的任何代码和带闭括号的操作符并执行它,如下所示:

我没有在其他浏览器中找到此行为,仅在Chrome中.
也许它是一个功能,但它为什么以及如何工作,它是JavaScript引擎的问题吗?
这是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)
等等.
这是因为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的内部对象.
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |