Mar*_*aio 1 javascript reserved-words
Web应用程序的网页显示一个奇怪的错误.我倒退了所有的HTML/CSS/JS代码,并得到了下面的基本简单代码.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<title>test</title>
<script type="text/javascript">
var TestObj =
{
foo: function() {}
}
alert(x); //ok displays "undefined"
var x = TestObj.foo;
var z = TestObj.foo;
</script>
</head><body>
<p onclick='alert(x);'>Click shows function foo!</p>
<img onclick='alert(x);' alt='CRAZY click displays a number in FF/Safari not function foo' src='' style='display: block; width: 100px; height: 100px; border: 1px solid #00ff00;'>
<p onclick='alert(x);'>Click shows function foo!</p>
</body></html>
Run Code Online (Sandbox Code Playgroud)
这很疯狂:当点击P元素时,字符串"function(){}"按预期显示.但是当单击IMG元素时,它会显示一个数字,好像x函数以某种方式从内存中删除或被解除实例化(它甚至不会将x显示为"未定义"而是显示为数字).
为了让你快速测试它,我上面摆放也是测试工作在这里.
这可以在Firefox 3.6和Safari 4.0.4上重现.
一切都只适用于IE7 +.
我真的无言以对,我在想,如果X是也许在JS的Firefox/Safari浏览器保留关键字.感谢任何可以提供帮助的人!
供参考:
你的问题是变量范围,而不是保留"x".图像对象具有名为"x"的属性.您可以使用Chrome的开发人员工具查看此内容.当你叫"alert(x);" 在图像对象上,范围中的"x"是图像上的"x"属性.