gpt4 book ai didi

javascript - 用空格混淆变量名

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:52 25 4
gpt4 key购买 nike

我的目标不是在真实网站中使用它,而是为了获取知识和乐趣。

我想写这样的东西:

var  =3;
alert( );

(不是空格,而是特定的 unicode 字符)

这可能吗?如果不是,是否有等效的东西?

最佳答案

虽然您不能将任何 Unicode 空白字符用作“原始”名称,但您可以使用 window 和括号表示法来施展魔法。

例如:

window["    "] = 1;
alert(window[" "]);

这些本身并没有“命名”,因为如果不摆弄 window 的属性就无法引用它们,因为 JavaScript 会忽略空格,但在混淆时它们会起到作用。

当然,这可以任意扩展到任何对象; window 不是必需的,但它是我想到的,因为所有全局变量都是 window 的属性。为此,你可以有类似的东西:

var vars = {};
vars[" "] = 1;
vars[" "] = 2;
vars[" "] = 3;

alert(vars[" "] + vars[" "] + vars[" "]);

我认为这与您能够使用空格命名的变量一样接近。它们不是 var 关键字意义上的 true 变量,但它们与您可能达到的一样接近。

当然,您也可以使用 Unicode 空白字符作为属性:

var vars = {};
vars[" "] = 1; // uses em quad, U+2001
alert(vars[" "]); // real variable, alerts 1
alert(vars[" "]); // fake variable, alerts undefined

在本例中,我使用 U+2001 作为属性。它看起来和它后面的非常相似,它只是一个字符串中的通用空格,但它们与警告提示的不一样。

一个潜在的“问题”,就混淆而言,由于适当的等宽字体和语法突出显示,字符串被非常清楚地分隔,所以我不确定原始空间本身会有多大用处。但是,如果您加入一些更漂亮的 Unicode 空格,您的结果可能会更好。

关于javascript - 用空格混淆变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11275315/

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