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

lva*_*yut 3 javascript jshint

reason在函数内部将变量定义为javascript对象,然后使用此对象定义属性,如下所示:

$scope.upsertReason = function() {
    var reason = {},
        reason.reasons = [],
        reason.scholarships = [];
}
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

我已经验证我没有reason在代码中的任何其他地方定义变量.任何帮助,将不胜感激.

the*_*eye 6

您不能使用varstatement声明对象的属性,因为varstatement期望变量名称不包含无效字符.并且.绝对是标识符名称的无效字符.因此,您无法声明一个名为reason.reasons或的新变量reason.scholarships.

你应该声明reason这样

var reason = {
    reasons: [],
    scholarships = []
};
Run Code Online (Sandbox Code Playgroud)