Ответ 1
Это доступ к словарю, который похож на массив, но с ключом вместо числового индекса.
operations['+']
будет оценивать функцию plus
, которая затем вызывается с аргументами plus(x,y)
.
В середине этой страницы я нахожу код ниже.
var plus = function(x,y){ return x + y };
var minus = function(x,y){ return x - y };
var operations = {
'+': plus,
'-': minus
};
var calculate = function(x, y, operation){
return operations[operation](x, y);
}
calculate(38, 4, '+');
calculate(47, 3, '-');
Теперь, когда я могу проследить, как это работает, я никогда раньше не видел этого использования квадратных скобок. Это, конечно, не похоже на создание массива или обращение к члену массива. Это распространено? Если да, то где другие примеры?
Это доступ к словарю, который похож на массив, но с ключом вместо числового индекса.
operations['+']
будет оценивать функцию plus
, которая затем вызывается с аргументами plus(x,y)
.
Он назвал обозначение скобок. В JavaScript вы можете использовать его для доступа к свойствам объекта.
здесь operations
- это объект, где символы +
и -
относятся к двум функциям.
operations[operation]
вернет ссылку на функцию plus
, где значение operation
равно +
, а затем следующее ()
вызовет функцию
operations
- это объект, и когда вы делаете operations[property]
, вы получите связанную функцию, а затем передаете операнды как x и y.
operations['+']
function (x,y){ return x + y }
, который plus
operations['-']
function (x,y){ return x - y }
, который равен minus
В моей книге JavaScript говорится, что свойства объекта должны быть с именем с произвольными именами. Но "+" и "-" не являются именами. Из исходного вопроса выведено, что свойства объекта просто должны быть keyed, не названы.