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

Jshint-变量已定义且缺少javascript对象的分号,javascript,jshint,Javascript,Jshint,我将reason变量定义为函数中的javascript对象,然后使用此对象定义属性,如下所示: $scope.upsertReason = function() { var reason = {}, reason.reasons = [], reason.scholarships = []; } 我不知道为什么我总是出现以下错误: 412 | reason.reasons = [], ^

我将
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
变量。任何帮助都将不胜感激。

您不能使用
var
语句声明对象的属性,因为
var
语句要求变量名不包含无效字符。而
对于标识符名称来说绝对是无效字符。因此,不能声明名为
reason.reasons
reason.reasons
的新变量

你应该像这样声明原因

var reason = {
    reasons: [],
    scholarships = []
};
如前所述,您可以这样做:

var reason = {
    reasons: [],
    scholarships = []
};
或者,如果您想单独完成,您可以:

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

设置对象属性不是变量声明。