这段代码让我很困惑:
players = 5;
window["Kappa"] = 2;
if (players > 2)
window["Kappa"] = 3;
document.write(Kappa);
document.write(Kappa);

正如你所看到的那样它返回23,即使它打印两次相同的变量?不应该打印33而不是吗?
我得到window['variable']
创建一个名为变量的新变量,但我仍然无法解决为什么同一个变量会输出不同的东西......为什么他们甚至会使用window
代替var
在这里?
答案 0 :(得分:6)
输出原因23而不是33是因为实际上有2个Kappa
变量。其中一个Kappa
变量以 K (U + 004B)开头,而另一个Kappa
以 Kelvin K (U + 212A)开头。即使它们是不同的字符,字体也会以相同的方式呈现它们。
Javascript变量不仅包含ASCII字符。 This网站对允许的字符进行了解释:
标识符必须以$,_或Unicode中的任何字符开头 类别“大写字母(Lu)”,“小写字母(Ll)”, “Titlecase letter(Lt)”,“Modifier letter(Lm)”,“Other letter(Lo)”, 或“字母编号(Nl)”。
字符串的其余部分可以包含相同的字符,以及任何字符 U + 200C零宽度非连接字符,U + 200D零宽度连接器 字符和Unicode类别中的字符“非间距标记 (Mn)“,”间距组合标记(Mc)“,”十进制数字编号(Nd)“,或 “连接符标点符号(Pc)”。
Javascript只查看标识符中的字符代码,而不是标识符的呈现方式。这就是Javascript认为这两个变量不同的原因。