Coffeescript пробел между именем функции и левой скобкой - PullRequest
0 голосов
/ 11 октября 2018

Какой смысл имеет пробел между именем функции и левой скобкой?

foo=(x,y)->x*y
foo(1,2) # ok
foo (1,2) # not ok

Последняя строка выше дает error: unexpected ,.

1 Ответ

0 голосов
/ 11 октября 2018

В Coffeescript вы можете вызвать функцию, которая принимает аргументы с круглыми скобками или без них:

foo(1,2)
foo 1, 2

Если у вас есть пробел, то он хорошо интерпретирует все, что следует в той же строке, что и аргументы.Давайте возьмем пример другой функции bar, которая принимает только один аргумент:

bar = (x) -> x * x

Вы можете вызвать это с пробелом перед круглой скобкой:

bar (2)
# ---> 4

Это потому, что скобкав Coffeescript (или Javascript) может использоваться для переноса выражения, а также для вызова функции.Типичные примеры - в операторах if или для сложных условных / математических выражений.В случае bar (2) содержимое выражения оценивается просто как 2 (так же, как если бы вы ввели 2 в кофейный CLI).Затем он передается в bar, как если бы вы вызвали bar 2.

Для вашей функции foo, которая принимает два аргумента, она оценивает (1,2) как выражение.Но , не является допустимым оператором, поэтому выдает ошибку.Так же, как если бы вы ввели 1,2 в кофейный CLI.

...