Чтобы было ясно. Скобки имеют три разные цели.
- Используется для включения списка аргументов при определении или вызове процедуры
- Для указания индексатора в массиве.
- Как оператор в выражении.
Есть два способа вызвать процедуру либо как оператор, либо как выражение.
Выражение: -
x = func(y)
Заявление: -
func y
Обратите внимание, что ключевое слово Call
вызывает процедуру, как если бы она была частью выражения, поэтому список аргументов должен содержаться в парантезах.
В приведенном выше тексте y
представляет собой очень простое выражение. Мы вполне могли бы использовать y + z
на этом этапе. На самом деле мы можем использовать любое допустимое выражение в этой точке, включая выражение, которое использует оператор круглых скобок. Например: -
x = (y)
является допустимым выражением. Следовательно, когда вы делаете: -
func(y)
VBScript видит вызов func
, в который передается результат выражения (y)
. Теперь, даже если func
определяет этот параметр как ByRef
, значение в y
не будет затронуто, потому что y
фактически не было передано в качестве параметра. То, что было передано, было результатом выражения (y)
, которое будет храниться где-то временно. Даже если это временное хранилище будет изменено на func
, оно будет впоследствии удалено и, следовательно, будет иметь такое же поведение, если параметр будет помечен как ByVal
.