为什么此Javascript代码会为同一个变量打印不同的值?

时间:2017-02-24 18:57:39

标签: javascript

这段代码让我很困惑:



players = 5;
window["Kappa"] = 2;
if (players > 2)
  window["Kappa"] = 3;
document.write(Kappa);
document.write(Kappa);




正如你所看到的那样它返回23,即使它打印两次相同的变量?不应该打印33而不是吗?

我得到window['variable']创建一个名为变量的新变量,但我仍然无法解决为什么同一个变量会输出不同的东西......为什么他们甚至会使用window代替var在这里?

1 个答案:

答案 0 :(得分:6)

解释

输出原因23而不是33是因为实际上有2个Kappa变量。其中一个Kappa变量以 K (U + 004B)开头,而另一个Kappa Kelvin K (U + 212A)开头。即使它们是不同的字符,字体也会以相同的方式呈现它们。

Javascript变量

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认为这两个变量不同的原因。