代码:
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/
输出为6
和5
。
很奇怪。
然后我尝试更改H
的值,结果仍然是意料之外的。
这里有什么神奇之处?
答案 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