gpt4 book ai didi

javascript - 为什么 }!{ 在 JavaScript 控制台中导致 False?

转载 作者:数据小太阳 更新时间:2023-10-29 04:03:48 24 4
gpt4 key购买 nike

如果您将 }!{ 放入 Chrome 的 JavaScript 控制台,结果您将得到 false

为什么我们没有得到错误?

最佳答案

此行为的原因是因为 Chrome 将您输入控制台的任何内容都包装在另一段代码中。

它包装的代码(在撰写本文时)如下:

with ((window && window.console && window.console._commandLineAPI) || {}) {
// Your code here.
}

输入 }!{ 关闭代码块大括号,并在末尾创建一个新的(取反的)对象。

正如您在控制台中看到的那样,!{} 返回 false


我经历了相当长的调查过程才找到这个问题的答案,下面保留了我的原始评论

原答案:

只是一个理论;我想象在控制台中输入的代码在函数内部被调用

function execUserCode() { 代码 }

你所做的就是创造

function execUserCode() { }!{ }

控制台正在返回最后一个结果,实际上是 !{ } = false


编辑:

很多关于这可能是错误的评论。我同意。这只是一个理论。

我喜欢这类谜题,所以我深入研究了 Chromium 源代码,这对我来说有点多,但我会留下一些建议,以防其他人尝试。

JS 控制台称为“检查器”,可在此处找到:

chromium/src/third_party/WebKit/Source/WebCore/inspector/

我一直在查看 inspector/front-end/ConsoleView.js,我想我找到了一些用户代码的执行位置。

evaluateUsingTextPrompt: function(expression, showResultOnly)
{
this._appendCommand(expression, this.prompt.text, false, showResultOnly);
},

原因!

小脑波。我在控制台中这样做了

> myEval = eval
> eval = function(str) { console.log(str); myEval(str) }
> }!{

结果:

with ((window && window.console && window.console._commandLineAPI) || {}) {
}!{
}

我很接近,但现在我们有了答案:)

代码在 chromium/src/third_party/WebKit/Source/WebCore/inspector/InjectedScriptSource.js 中生成,目前在第 440 行左右。

关于javascript - 为什么 }!{ 在 JavaScript 控制台中导致 False?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11989226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com