5

我正在尝试执行以下 JS 代码;

var foo = {
  func1:function(){
    function test()
    {
      alert("123");
    }();
    alert("456");
  },
  myVar : 'local'
};

但我收到一个错误 SyntaxError: invalid property id

上面的代码有什么问题?

4

3 回答 3

11

你有一个语法错误:

var foo = {
    func1:function() {
        function test() {
            alert("123");
        }();
//       ^ You can't invoke a function declaration
        alert("456");
    },
    myVar : 'local'
};

假设您想要一个立即调用的函数,则必须将该函数解析为表达式:

var foo = {
    func1:function() {
        (function test() {
//      ^ Wrapping parens cause this to be parsed as a function expression
            alert("123");
        }());
        alert("456");
    },
    myVar : 'local'
};
于 2013-07-26T10:28:39.690 回答
3

包装()

(function test(){
  alert("123");
}());

或者:

(function test(){
  alert("123");
})();
于 2013-07-26T10:28:50.040 回答
0

就我而言,这是非常不同的,在这里为可能遇到相同错误的其他人添加答案。

我有一个像下面这样的对象

var obj = {
  case: ''
};

因此,当将case属性称为obj. case, ascase是保留字时,我的编辑器codeMirror引发了错误。

在我将其重命名后casecaseNumber它运行良好。同样不能使用if, elseorswitch和其他 JS 关键字,即使作为属性也是如此。

于 2021-09-14T15:46:01.560 回答