javascript意外的计算结果

hgu*_*ser -5 javascript

代码:

g = function () {
  H = 3
  return H + H
}

f = function () {
  ? = 2
  return ? + H
}

// 3 + 3 = 6
alert(g())
// 2 + 2 = 5
alert(f())
Run Code Online (Sandbox Code Playgroud)

现场演示:http://jsfiddle.net/qhRJY/light/

虽然输出是65.

它很奇怪.

然后我尝试改变值H,结果仍然是意料之外的.

这里的魔力是什么?

Bar*_*mar 10

f,第一和第二?实际上是希腊字母Eta,而不是罗马字母H.它们看起来很相似,但它们不是同一个角色.它具有Unicode代码点0x51377,而不是ASCII代码0x48.所以你要添加两个不同的变量.

如果它是这样写的,你会发现意想不到的答案吗?因为这相当于你写的.

g = function () {
  H = 3
  return H + H
}

f = function () {
  Eta = 2
  return Eta + H
}

// 3 + 3 = 6
alert(g())
// 2 + 2 = 5
alert(f())
Run Code Online (Sandbox Code Playgroud)