В чем причина использования двух наборов скобок при вызове метода объекта - PullRequest
0 голосов
/ 28 января 2019

В настоящее время я изучаю и изучаю javascript, я только что нашел один простой код, который использует этот '() ();'как это называется, не нашел много информации об этом, что это такое и как оно используется, вот код, который я нашел:

  'use strict';
    let obj, method;
    
    obj = {
      go: function() { alert(this); }
    };
    
    obj.go();              
    
    (obj.go)();            
    
    (method = obj.go)();  
    
    (obj.go || obj.stop)();

Sory English не мой родной язык, если какая-то ошибка.

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Он просто контролирует порядок исполнения.Вы можете написать все так же, чтобы было понятнее:

// (obj.go)();
obj.go();

// (method = obj.go)();
method = obj.go;
method();

// (obj.go || obj.stop)();
var method = obj.go || obj.stop;
method();
0 голосов
/ 28 января 2019

Этот фрагмент кода демонстрирует, как this связан с контентом выполнения функции (в данном случае go).Это показывает, что простое размещение скобок вокруг метода не меняет этого поведения: this все еще связано с obj.

Как только круглые скобки окружают выражение с участием оператора (ов), ситуация меняется, и метод, который возвращает из выражения, вызывается без определенного this binding: применяется значение по умолчанию (undefined).

Другой вариант:

(0,obj.go)();

Здесь вводится запятая, и мы находимся в выражение case: this больше не связано с obj в вызове метода.

0 голосов
/ 28 января 2019

Используются самостоятельно, в скобках указаны операторы группировки.Они группируют выражения для контроля порядка или приоритета оценки.Вы можете прочитать MDN здесь об этом.

// example                 // is the same as            

(obj.go)();                 obj.go();

(method = obj.go)();        method = obj.go; method();

(obj.go || obj.stop)();     // calling go or stop after assinging to a temp variable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...