Синтаксис Javascript нуждается в объяснении - PullRequest
1 голос
/ 22 апреля 2011

Я читаю Javascript the Good Parts и обнаружил следующий фрагмент в главе 5 «Наследование»:

var coolcat = function (spec) {
   var that = cat(spec),
             super_get_name = that.superior('get_name');
   that.get_name = function (n) {
    return 'like ' + super_get_name() + ' baby'; return that;
    }
  }

Меня смущает кома после cat (spec) в строке 2. Что именно делает строка? (строка 2 + строка 3) Спасибо

Ответы [ 3 ]

5 голосов
/ 22 апреля 2011

Это просто сокращение для объявления двух переменных в одном выражении, оно эквивалентно следующему:

var that           = cat(spec);
var super_get_name = that.superior('get_name');

Запятая на самом деле является оператором в JavaScript:

Оператор запятой оценивает оба своих операнда (слева направо) и возвращает значение второго операнда.

Оператор var состоит из одного или нескольких выраженийформа:

varname [= value]

, где квадратные скобки обозначают необязательный компонент.Общий оператор var выглядит следующим образом:

var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];

Обычно вы видите только оператор запятой, используемый в var выражениях и for циклах :

for(var i = 0, x = complicated_array[0]; i < complicated_array.length; x = complicated_array[++i])

, но его можно использовать в других местах.

3 голосов
/ 22 апреля 2011

Позволяет вам объявить другую переменную. Это эквивалентно следующему:

var that = cat(spec);
var super_get_name = that.superior('get_name');

См. Документацию var @ MDC .

2 голосов
/ 22 апреля 2011

Отступ неверен, он должен быть:

var that = cat(spec),
    super_get_name = that.superior('get_name');

Это то же самое, что сказать:

var that = cat(spec);
var super_get_name = that.superior('get_name');
...