0

我只在 IE8 中遇到了一个奇怪的错误,在 IE9 中没有。错误信息是:

SCRIPT1028:预期的标识符、字符串或数字

这是我的标记:

<style>
    .warrior { color: red; }
    .ninja  { color: blue; }
    .wizard { color: green; }
</style>

<div id="player"></div>
<script src="Scripts/jquery.min.js"></script>
<script>
    (function () { 
        "use strict"; 

        var joeBlow = {
            name: "Joe Blow",
            class: "ninja", 
            age: 35
        };
        $("#player").html(joeBlow.name + " " + joeBlow.age).addClass(joeBlow.class);
    }());
</script>

我的期望是DIV将“Joe Blow 35”写成蓝色,但我收到了上面的错误。

是什么导致这种情况发生在 IE8 中,而不是 IE9 或 IE10?

4

2 回答 2

6

class是保留关键字。在它周围加上引号'class'[]您可能还必须使用 中的符号访问该属性joeBlow['class']

于 2013-09-20T22:35:25.333 回答
2

正如 plalx 解释的那样,您必须引用class并使用 IE 8 的括号表示法来支持将其用作属性名称,因为它是一个保留字。

var joeBlow = {
    name: "Joe Blow",
    'class': "ninja", 
    age: 35
};
$("#player").html(/* ... */).addClass(joeBlow['class']);

或者,为该属性使用另一个名称。(注意:这是 W3C 为 选择的选项className。)

但是,为了进一步解释原因:

这是由于使用的标准不同。具体来说,IE 8 实现了 ECMAScript 3,而 IE 9 和 10 实现了 ECMAScript 5

而且,在 ECMAScript 的这些版本之间,对象初始化器点表示法的语法发生了变化,以允许任何IdentifierNames (ES5),其中包括ReservedWords,而不是仅限于Identifiers (ES3)。

标识符:: IdentifierName 但不是 ReservedWord

于 2013-09-20T23:20:07.387 回答