JavaScript 在 Chrome 开发者工具中的奇怪行为
Strange behaviour of JavaScript in Chrome Developer Tool
最近,在开发者工具中使用 JavaScript 时,我发现了一个奇怪的功能。 Chrome 接受带运算符(加号、减号)的左括号和带右括号的运算符之间的任何代码并执行它,如下所示:
我没有在其他浏览器中发现这种行为,只是在 Chrome 中。
也许这是一个功能,但它为什么以及如何工作,JavaScript 引擎有问题吗?
发生这种情况是因为 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.
的内部对象
这是 chrome 评估您的输入的方式:
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
// your code here...
}
所以一旦你的输入是 }{
它变成
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {}{} // indefined
下一个输入}-+{
变成
undefined -+ {} // NaN
以此类推
最近,在开发者工具中使用 JavaScript 时,我发现了一个奇怪的功能。 Chrome 接受带运算符(加号、减号)的左括号和带右括号的运算符之间的任何代码并执行它,如下所示:
我没有在其他浏览器中发现这种行为,只是在 Chrome 中。
也许这是一个功能,但它为什么以及如何工作,JavaScript 引擎有问题吗?
发生这种情况是因为 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.
这是 chrome 评估您的输入的方式:
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {
// your code here...
}
所以一旦你的输入是 }{
它变成
with (typeof __commandLineAPI !== 'undefined' ? __commandLineAPI : { __proto__: null }) {}{} // indefined
下一个输入}-+{
变成
undefined -+ {} // NaN
以此类推