Зачем использовать круглые скобки при возврате в JavaScript?

В коде Framework Restify я нашел эту функцию:

function queryParser(options) {

    function parseQueryString(req, res, next) {
        // Some code goes there
        return (next());
    }
    return (parseQueryString);
}

Почему автор написал return (next()); и return (parseQueryString);? Нужно ли там скобки и если да, то почему?

Ответ 1

Это не обязательно должно быть, но это действительный код JavaScript. На самом деле довольно необычно видеть такой синтаксис. Я предполагаю, что это личное предпочтение автора.

Ответ 2

Использование скобок при возврате необходимо, если вы хотите написать оператор возврата в нескольких строках.

React.js предлагает полезный пример. В возвращаемом выражении свойства render в компоненте, который вы обычно хотите распространять JSX, вы возвращаете несколько строк для удобства чтения, например:

render: function() {
    return (
        <div className="foo">
            <h1>Headline</h1>
            <MyComponent data={this.state.data} />
        </div>
    );
}

Без круглых скобок это приводит к ошибке!


В более общем плане, не используя круглые скобки при распространении оператора return на несколько строк, это приведет к ошибке. В следующем примере выполняется правильно:

var foo = function() {
  var x = 3;
  return (
    x 
    + 
    1
  );
};
console.log(foo());

Ответ 3

// Create a component named MessageComponent
var MessageComponent = React.createClass({
  render: function() {
    return (
      <div>{this.props.message}</div>
    );
  }
});

ПРИМЕЧАНИЕ. Зачем нам нужны скобки вокруг оператора return (строка 3)? Это связано с автоматической установкой точки с запятой JavaScript. Без круглых скобок JavaScript игнорирует следующие строки и вернуться без значения. Если JSX начинается с той же строки, что и return, то скобки не нужны.

Взято из здесь.

Ответ 4

Почему автор пишет return (next());...?

Относительно next():

Вероятно, потому что его функция примерно такая:

function next()
{
  var i=0;
  return function (){
    // Do something with that closured i....
  }
}

Относительно (xxx);:

Это не нужно. Каждый minifier удалит его.

Пример (uglifyJS):

Enter image description here

становится:

Enter image description here

Ответ 5

Просто добавьте к тому, что сказали другие.

Использование скобок вокруг возвращаемого значения является допустимым JavaScript, но в основном это плохо.

В основном плохо, потому что он ничего не добавляет, но увеличивает размер JavaScript, что означает, что в браузер больше загружать. Да, большинство людей имеют быстрые широкополосные подключения, но не упускают из виду тот факт, что все, что вы помещаете в файл JavaScript, нужно загружать, чтобы избежать ненужного раздувания кода. Это, вероятно, не имеет значения, если вы используете инструмент для уплотнения кода (minifier уже упоминался), но не все делают.

Иногда это может помочь читаемости. В этом случае трудно придумать пример, но если использование скобок делает ваш JavaScript более понятным для вас как разработчика и, следовательно, его проще поддерживать, то используйте их, даже если это противоречит тому, что я сказал о раздувании кода.

Ответ 6

Это может быть старым, но return () можно использовать следующим образом:

function parseQueryString(req, res, next) {
            var id = req.param('id');
            return (id ? "Foo" : "Bar");
}

Меньше кода, легко читаемый:)

Ответ 7

Скобки используются для двух целей в операторе возврата.

  • Для поддержки многострочного выражения, как указано в @Andru Answer.
  • Чтобы разрешить возврат объекта в функции стрелки, как показано ниже:

() => ({ name: 'Amanda' })//Shorthand to return an object

Это эквивалентно

() => {
 return { name : 'Amanda' }
}

Для получения дополнительной информации, пожалуйста, проверьте эту статью. https://medium.com/@leannezhang/curly-braces-versus-parenthesis-in-reactjs-4d3ffd33128f