代码:
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/
虽然输出是6和5.
它很奇怪.
然后我尝试改变值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)