Добавление дополнительных скобок в метод в JavaScript? - PullRequest
2 голосов
/ 14 февраля 2020

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

Например:

if( (typeOf VariableName) === "function" ) 

или

alert(("Hello World"))

Что они делают и зачем они нужны?

Ответы [ 3 ]

3 голосов
/ 14 февраля 2020

В JS, круглые скобки используются для нескольких целей.

  • Оператор группировки (как в математических выражениях)
  • Вызов функции (если размещен после идентификатора)
  • Несколько операторов требуют их

Примеры, которые вы предоставили, относятся к типу, где они действуют как операторы группировки.

В вашем сценарии они не нужны, оба примера будут работать также и без них.

Однако бывают случаи, когда вам нужно использовать дополнительные имена, например:

  • Принудительное выражение в контексте выражения:

    function(){}() //This is evaluated like a function declaration, SyntaxError
    
    (function(){})() //Works
    
    x => {'x': x} //Returns undefined
    
    x => ({'x': x}) //Returns the object
    
  • Изменение порядка оценки:

    1+2*3 //7
    
    (1+2)*3 //9
    
1 голос
/ 14 февраля 2020

Эти конкретные примеры будут работать без дополнительных скобок.

const x = () => {};

if( (typeof x) === "function" ) {
  console.log('yup');
}

if(typeof x === "function") {
  console.log('yup');
}

alert("Hello World")

Один из вариантов использования для добавления дополнительных скобок - преодоление приоритета оператора .

console.log(3 + 4 * 5); // 3 + 20
console.log((3 + 4) * 5); // 7 * 5

Другой пример, где используется добавление круглых скобок вокруг функции, - это вызов функции в том же месте, в котором она определена (обычно известный как IIFE ):

function notInvoked() {
  console.log('this does not happen');
}

(function invoked() {
  console.log('this happens');
})(); // Note: an IIFE also requires a pair of () before or after the last parenthesis so that the function is actually invoked
0 голосов
/ 14 февраля 2020

Вы помните [БОДМАС] Правило,

, которое имеет набор правил арифметики c приоритет для способа, которым микропроцессор выполняет арифметику c решения.

Таким образом, наивысшим приоритетом в правиле является скобка. Мы можем установить операторы в скобках, где конечные результаты могут повлиять из-за вычитания сложения с умножением деления [DMAS] предшествования. (которые во многих случаях упускаются из виду из-за сложностей утверждений)

...