Да & mdash; Точно так же, как вы, но без []
вокруг, когда вы его используете:
context.drawImage(image, ...TOP_LEFT);
Live Пример:
function drawImage(image, x, y) {
console.log("image = " + image);
console.log("x = " + x);
console.log("y = " + y);
}
const TOP_LEFT = [0, 0]
drawImage("the image", ...[TOP_LEFT]);
Теперь вы, возможно, не захотите делать это в тесном цикле из тысяч итераций, потому что теоретически и, как указано, ...TOP_LEFT
включает в себя вызов функции в массиве для создания объекта итератора, а затем повторный вызов метода на том итераторе, который каждый раз создает объект результата и получает свойство из этого объекта результата. Но все это потенциально может быть подвергнуто оптимизации, и в любом случае мы обычно хотим не беспокоиться о производительности до тех пор, пока не будет решена конкретная проблема с производительностью.
Вы можете помочь оптимизатору, заморозив ваш массив:
const TOP_LEFT = Object.freeze([0, 0]);
... но вы хотите протестировать целевые среды, чтобы убедиться, что это действительно полезно.
Примечание: ...
не оператор, и не может быть. Оператор, как и функция, имеет одно значение результата. Spread (и остальные) - это первичный синтаксис, а не операторы, такие как операторы for
, объявления функций и инициализаторы объектов.