在Javascript FF/Safari中的xa保留关键字不在IE中吗?

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浏览器保留关键字.感谢任何可以提供帮助的人!

供参考:

  1. 如果你用z()重新表达x(),一切都在所有浏览器中完美运行(这对我来说更加疯狂)
  2. 在src属性中添加实际图像不能解决问题
  3. 删除img中的样式并不能解决问题(我给图像的样式只是为了帮助你点击图像,因此你可以看到imnage边框)

Dav*_*vid 6

你的问题是变量范围,而不是保留"x".图像对象具有名为"x"的属性.您可以使用Chrome的开发人员工具查看此内容.当你叫"alert(x);" 在图像对象上,范围中的"x"是图像上的"x"属性.