4

我有一个在 IE8 中测试的网页,它告诉我该页面有错误。我试图想出一个简单的例子,我想出了这个:

<!DOCTYPE HTML>
<html>
<head>
  <script>
  var stuff = {
    "foo": {
      "new": 42
    }
  };
  var thing = stuff.foo.new;
  </script>
</head>
<body>
</body>
</html>

可以在这里测试。

这是我看到的错误:

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Timestamp: Mon, 21 Jan 2013 23:11:52 UTC


Message: Expected identifier
Line: 11
Char: 25
Code: 0
URI: file:///C:/Documents%20and%20Settings/Administrator/My%20Documents/ie8PropertyNameTest.html

IE7 显示类似的错误。它在我测试页面的所有其他浏览器中都能正常工作,包括较新版本的 IE。有谁知道是什么导致了这个问题以及如何避免它(除了选择其他名称的明显解决方案)?

4

2 回答 2

10

new是 JavaScript 保留字。您可以通过以下方式前往酒店:

var thing = stuff.foo["new"];

(我敢打赌)。您可以通过调用类似“isNew”的属性来省去一些麻烦。

于 2013-01-21T23:19:38.237 回答
3

如果您new用作密钥,请不要这样做:

foo.new = 'bar';

相反,请执行以下操作:

foo['new'] = 'bar';
于 2013-01-21T23:21:13.293 回答