function a() { return 1; }
function b() { return(1); }
Я протестировал приведенный выше код в консоли Chrome, и оба вернулись 1
.
function c() { return "1"; }
function d() { return("1"); }
Я также протестировал приведенный выше код, и обе функции вернулись "1"
.
Так в чем разница между использованием return
и return()
?
javascript
chris97ong
источник
источник
void(x)
,typeof(x)
void(0)
поскольку это должно быть сокращение от undefined . Итак, если это сокращение, зачем включать ненужные символы? ;-)void i = 1; // ReferenceError
vsvoid (i = 1); // undefined
Ответы:
То же, что и между
и
То есть ничего. Скобки разрешены, потому что они могут влиять на порядок оценки в любом выражении, но в ваших примерах они просто излишни.
return
это не функция, а инструкция . Он синтаксически похож на другие простые операторы потока управления, такие какbreak
иcontinue
, в которых также не используются круглые скобки.источник
return
преобразовали в функцию, как бы вы вернули из нее значение?Нет никакой разницы.
return
это не вызов функции, а выражение языка. Все, что вы делаете со скобками, - это просто группируете возвращаемое значение, чтобы его можно было оценить. Например, вы можете написать:В этом случае вы возвращаете значение оператора
x == 0
, которое вернет логическое значениеtrue
или вfalse
зависимости от значенияx
.источник
На самом деле здесь приоритет
()
выше, поэтому он сначала оценивает:Здесь сначала
("1")
оцениваются следующим образом:поэтому приведенное выше утверждение эквивалентно:
Визуально увидеть:
Таким образом, в принципе нет никакой разницы в функциональности, но второй может быть незначительно медленным, поскольку он сначала решает скобки.
источник
Абсолютно никакой разницы. Если вы посмотрите на JS (ECMAScript) спецификацию оператора возврата . Среди прочего он сообщает вам:
что вы можете выразить
return
. Экспрессияhello
,Math.abs(x)
,yourCustomFunc(7)
или в вашем втором случае это может быть1
или(1)
. Выражение1
после оценки такое же, как(1)
и то же самое(((((1))))))
или даже как нечто действительно причудливое(+(!(+(!1))))
.источник
Разницы нет, скобки необязательны. См. MSDN :
источник
return
заявлении. : P MS наверное устал отвечать на вопрос от новичков JS.()
является частью оператора возврата.return (expression
иreturn expression)
является законной.return ()
,return (
иreturn )
: Preturn
-это оператор,ключевое слово, с которого начинается оператор возврата , а не функция.Как уже упоминалось, дополнительные круглые скобки влияют на порядок оценки, но не используются для «выполнения» названной функции
return
. Вот почему эти строки работают без проблем:По сути, они идентичны этим строкам:
Причина, по которой
return()
возникает синтаксическая ошибка, заключается в точной причине, по которой следующая строка выдает ошибку (для сравнения включен оператор возврата):источник
return
после него ничего не указано, предполагается, что вы хотели вернутьсяundefined
.return
само по себе является оператором возврата.Есть огромная разница для людей и нулевая разница для движка Javascript.
return 1
- это оператор, объявляющий, что нам нужно немедленно выйти из функции, получив значение 1.return(1)
- это то же утверждение, замаскированное под вызов функции по идиотскому соглашению о том, что вы не обязаны вставлять пробел вне скобок в Javascript. Если вы будете использовать такой код в производственной системе, любой сопровождающий придет к вам в офис со ставками и факелами, потратив некоторое время на попытки решить, действительно ли у вас естьreturn()
функция где-то в базе кода или просто вы не знаете, для чего нужноreturn
ключевое слово.Как уже правильно сказали многие другие, круглые скобки не делают ничего, кроме «группировки» с более высоким приоритетом литерала числа
1
.источник
return
функции нет . «идиотское соглашение о том, что вы не обязаны вставлять пробелы вне скобок в Javascript» - этого почти не требует язык; называть этого идиотом - идиотизм. «любой сопровождающий придет к вам в офис с кольями и факелами» - ни один компетентный не пойдет.return(1)
Это плохая практика, но люди, которые расстраиваются из-за таких вещей, тратят ресурсы и создают плохую атмосферу.return
функции» - тот факт, что интерпретатор запретит вам регистрировать функцию с именемreturn
, не поможет читателю кода сначала не подвергнуть сомнению его здравомыслие, поэтому этот код является пустой тратой.return(1)
это не просто «плохая практика», это опасный признак того, что кто-то не знает, что делает!return
имеет (на всех языках, которые имеют это ключевое слово) наименьший приоритет. Итак, если присутствует необязательное выражение, оно всегда вычисляется первым.В операторе return круглые скобки вокруг выражения уже встроены.
В JavaScript, как и во многих других языках (например, C, C ++, Java, Python), оператор return состоит из двух частей: ключевого слова
return
и (необязательного) выражения. Таким образом, в любом случае все, что следует заreturn
ключевым словом, сначала оценивается как выражение , после чего оператор return «выполняется» путем передачи управления обратно вызывающей стороне.Использовать или не использовать круглые скобки - это вопрос стиля , тогда как большинство руководств по стилю запрещают их для тривиальных случаев, подобных тому, что цитируется в вашем вопросе, потому что это делает return ложно похожим на функцию.
Позднее добавление
Если в круглых скобках или без них, никогда не забывайте размещать необязательное выражение после
return
, то есть в той же строке. Реальная ловушка сreturn
в JavaScript лежит в добавлении разрыва строки после него:... потому что
test
функция вернетсяundefined
.источник
добавив круглые скобки, мы убедились, что javascript не вставляет точку с запятой перед несколькими операторами, написанными после возврата, для справки: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar #Automatic_semicolon_insertion
пример :
return a + b;
преобразован в
return; a + b;
пользователя ASI.
Консоль предупредит «о недоступности кода после оператора возврата». Чтобы избежать этой проблемы (чтобы предотвратить ASI), вы можете использовать круглые скобки:
return ( a + b );
код скопирован с: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
источник