2017-02-21 7 views
0

Что случилось с этим:AngularJS «неожиданный маркер [» инициализирует массив объектов

var a = "1"; 
    var b = {}; 
    var b[a] = 'test'; 

Согласно this SO question, вышесказанное справедливо. Но var b[a] = 'test' генерирует эту ошибку в AngularJS (v1):

Uncaught SyntaxError: Unexpected token [

+8

Снимите 'var' из третьей строки, и он будет таким же, как этот вопрос. – George

+0

DOH! Я смотрел прямо на него. – lilbiscuit

ответ

6

Эта строка:

var b[a] = 'test'; 

не является допустимым, так как символы [ и ] не допускаются в именах переменных.

Если вы не желая объявить новую переменную на этой линии, а просто присвоить пару ключ/значение для объекта b, вы можете просто удалить var:

b[a] = 'test'; //b now equals { "1": "test" } 
+0

Да, на самом деле я часто вижу такие вещи среди новичков. 'var' требуется только для объявления /« создания »_ новой переменной_. Хотя 'b [a]' в настоящее время не существует, это не переменная; это свойство объекта, принадлежащего переменной 'b'. Таким же образом вам не нужно «var» при назначении значения существующему var, например. 'a = 2;'. –

Смежные вопросы