当对象具有“new”作为属性名称时,来自IE8和IE7的“预期标识符”错误

时间:2013-01-21 23:17:56

标签: javascript internet-explorer internet-explorer-8 internet-explorer-7

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

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

可以对其进行测试here

这是我看到的错误:

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。有谁知道导致这个问题的原因以及如何避免它(除了选择其他名称的明显解决方案之外)?

2 个答案:

答案 0 :(得分:10)

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

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

(我打赌)。你可以通过调用属性“isNew”来节省一些麻烦。

答案 1 :(得分:3)

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

foo.new = 'bar';

相反,这样做:

foo['new'] = 'bar';