我的目标不是在真正的网站中使用它,而是为了知识和乐趣。
我想写一些类似的东西:
var =3;
alert( );
(不是空格,而是一个特定的 unicode 字符)
可能吗?如果没有,有没有等价的东西?
我的目标不是在真正的网站中使用它,而是为了知识和乐趣。
我想写一些类似的东西:
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
,但它们与您可能会出现的一样接近。
当然,您也可以使用 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 空间,您的结果可能会更好。