Jshint - JavaScript对象的变量已经定义且缺少分号

3
我在一个函数中定义了一个名为 reason 的 JavaScript 对象变量,随后用这个对象来定义属性,具体如下:
$scope.upsertReason = function() {
    var reason = {},
        reason.reasons = [],
        reason.scholarships = [];
}

我不知道为什么我总是会遇到以下错误:

412 |            reason.reasons = [],
                       ^ 'reason' is already defined.
412 |            reason.reasons = [],
                       ^ Missing semicolon.
412 |            reason.reasons = [],
                       ^ Expected an identifier and instead saw '.'.
412 |            reason.reasons = [],
                       ^ Expected an assignment or function call and instead saw an expression.
412 |            reason.reasons = [],
                        ^ Missing semicolon.
413 |            reason.scholarships = [];
                                        ^ Expected an assignment or function

我已经确认在代码中没有定义reason变量。需要帮助,谢谢。


1
设置对象属性并不是变量声明。 - Leo
2个回答

6

如果使用var语句声明对象的属性,因为var语句期望变量名不包含无效字符,所以不能声明名为reason.reasons或者reason.scholarships的新变量。而.显然是一个标识符名称的无效字符。

你应该像这样声明reason

var reason = {
    reasons: [],
    scholarships = []
};

2

就像thefourtheye所说,你可以采取以下两种方法:

var reason = {
    reasons: [],
    scholarships = []
};

或者如果您想单独执行每个操作,您可以执行以下操作:

var reason = {};
reason.reasons = [];
reason.scholarships = [];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接