В чем разница между return и return()?

function a() { return 1; }
function b() { return(1); }

Я тестировал вышеуказанный код в консоли Chrome, и оба возвращали 1.

function c() { return "1"; }
function d() { return("1"); }

Я также проверил код выше, и обе функции возвратили "1".

В чем разница между использованием return и return()?

Ответ 1

То же, что между

var i = 1 + 1;

и

var i = (1 + 1);

То есть ничего. Скобки доступны, потому что они разрешены в любом выражении, чтобы влиять на порядок оценки, но в ваших примерах они просто лишние.

return - это не функция, а инструкция. Он синтаксически похож на другие простые операторы потока управления, такие как break и continue, которые также не используют круглые скобки.

Ответ 2

Нет никакой разницы.

return не является вызовом функции, а является выражением языка. Все, что вы делаете с круглыми скобками, просто группирует возвращаемое значение, чтобы оно могло быть оценено. Например, вы можете написать:

return (x == 0);

В этом случае вы возвращаете значение инструкции x == 0, которая вернет логическое значение true или false в зависимости от значения x.

Ответ 3

Фактически здесь приоритет () выше, поэтому он сначала оценивает:

Здесь сначала ("1") оценивается следующим образом:

("1")                     ==> "1"
("1","2")                 ==> "2"
("1","2","3")             ==> "3"
("1"+"2","2"+"2","3"+"2") ==> "32"
(2+3+6)                   ==>  11

поэтому оператор выше эквивалентен:

return "1";

Смотрите визуально:

viusal

Таким образом, в функциональности нет принципиальной разницы, но во-вторых, это может быть незначительно медленным, поскольку сначала разрешает скобки.

Ответ 4

Нет разницы, скобки необязательны. См. MSDN:

return[(][expression][)];

Необязательный аргумент выражения - это значение, возвращаемое функцией. Если опустить, функция не возвращает значение.

Вы используете оператор return, чтобы остановить выполнение функции и вернуть значение выражения. Если выражение опущено или оператор return не выполняется из функции, выражению, вызывающему текущую функцию, присваивается значение undefined.

Ответ 5

Нет абсолютно никакой разницы. Если вы посмотрите на инструкцию JS (ECMAScript) спецификации return. Среди многих других вещей он говорит вам:

return [no LineTerminator here] Expression;

что вы можете предоставить выражение return. Выражение hello, Math.abs(x), yourCustomFunc(7), или во втором случае это может быть 1 или (1). Выражение 1 после оценки такое же, как (1) и то же, что и (((((1)))))), или даже как-то действительно странное, как (+(!(+(!1)))).

Ответ 6

return представляет собой оператор ключевое слово, которое запускает оператор return, не функция.

Как уже упоминалось, дополнительные круглые скобки влияют на порядок оценки, но не используются для "выполнения" функции с именем return. Вот почему эти линии работают без проблем:

return (1);
var a = (1);

Они, по сути, идентичны этим строкам:

return 1;
var a = 1;

Причина return() выдает синтаксическую ошибку для точной причины следующая строка выдает ошибку (оператор возврата включен для сравнения)

return();    // SyntaxError: syntax error
var a = ();  // SyntaxError: syntax error

Ответ 7

Существует огромная разница для людей и нулевая разница для движка Javascript.

return 1 - это оператор, объявляющий, что нам нужно немедленно выйти из функции, дающей значение 1.

return(1) - это то же самое выражение, замаскированное под вызов функции идиотическим соглашением, что вы не обязаны вставлять пространство вне круглых скобок в Javascript. Если бы вы использовали такой код в производственной системе, любой сопровождающий придет в ваш офис с пакетом акций и факелами, потратив некоторое время на то, чтобы решить, действительно ли у вас есть функция return() где-то в базе кода или просто не знаете, что return ключевое слово для.

Как и многие другие люди уже правильно сказали, круглые скобки не делают ничего, кроме "группы" с более высоким приоритетом, буква для Number 1.

Ответ 8

В операторе return круглые скобки вокруг выражения уже встроены.

В JavaScript, как и во многих других языках (например, C, С++, Java, Python), оператор return имеет две части: ключевое слово return и (необязательное) выражение. Таким образом, в любом случае все, что следует за ключевым словом return, сначала оценивается как выражение, после этого оператор return "выполняется", передавая управление обратно вызывающему.

Использовать или не использовать круглые скобки - это вопрос стиля, тогда как большинство руководств по стилю запрещают им тривиальные случаи, подобные тем, которые указаны в вашем вопросе, потому что он делает ложную обратную функцию как функцию.