最近,在开发者工具中使用JavaScript时,我发现了一个奇怪的特性。Chrome 接受在括号内带有运算符(加号、减号)的任意代码,并执行它,就像这样:
我没有在其他浏览器中发现这种行为,只有在 Chrome 中。也许这是一种特性,但是它为什么会起作用?它是否可能会造成 JavaScript 引擎的问题?
![enter image description here](https://istack.dev59.com/4iHzP.webp)
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
// your code here...
}
}{
,它就会变成。with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {}{} // indefined
下一个输入 }-+{
变成了
undefined -+ {} // NaN
以此类推。
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
// Your code
}
因此,当您输入像} 10 {
这样的内容时,代码的评估结果为:
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
} 10 {
}
这段内容涉及到it技术,描述了一个空的块、数字和一个空的结构块。
__commandLineAPI
是一个内部对象,包含着Chrome命令行API。