javascript意外的计算结果

时间:2014-06-03 04:00:14

标签: javascript

代码:

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

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

// 3 + 3 = 6
alert(g())
// 2 + 2 = 5
alert(f())

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

输出为65

很奇怪。

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

这里有什么神奇之处?

3 个答案:

答案 0 :(得分: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())

答案 1 :(得分:0)

这是一个棘手的问题。用字母表修改问题H.它看起来像罗马字母或特殊字符。它与“H' H'对我来说。

答案 2 :(得分:-4)

f = function () {
  Η = 3
  return Η + H
}

此代码,请更改为

f = function () {
  I = 3;
  return I + I;
}

“H”未从第一个函数中清除,它仍然使用前一个值。 2 + 3 = 5