Отслеживание маяков

Закрытие очень похоже на объект. Он создается при каждом вызове функции.

Объем закрытия в JavaScript лексический, что означает, что все, что содержится в функции, к которой принадлежит замыкание , имеет доступ к любому переменная, которая в ней.

Переменная содержится в закрытии , если вы

  1. назначили ее с помощью var foo=1; или
  2. просто напишите var foo;

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

Закрытие переживает время выполнения функции, которая породила его. Если другие функции выходят из закрытия / scope , в котором они определены (например, как возвращаемые значения), они будут продолжать ссылаться на это закрытие .

Пример

 function example(closure) {
   // define somevariable to live in the closure of example
   var somevariable = 'unchanged';

   return {
     change_to: function(value) {
       somevariable = value;
     },
     log: function(value) {
       console.log('somevariable of closure %s is: %s',
         closure, somevariable);
     }
   }
 }

 closure_one = example('one');
 closure_two = example('two');

 closure_one.log();
 closure_two.log();
 closure_one.change_to('some new value');
 closure_one.log();
 closure_two.log();

Выход

somevariable of closure one is: unchanged
somevariable of closure two is: unchanged
somevariable of closure one is: some new value
somevariable of closure two is: unchanged
0
задан Anas Shaaban 22 March 2019 в 11:11
поделиться

1 ответ

Чтобы найти ближайший маяк, вы можете попробовать что-то вроде этого:

        @Override
        public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region){

            String closestBeacon = null;
            for (Beacon beacon : beacons) {
                if (closestBeacon == null)
                    closestBeacon = beacon;
                else {
                    if (closestBeacon.getDistance() > beacon.getDistance()) {
                        closestBeacon = beacon;
                    }
                }
            }

            Log.i(TAG, closestBeacon.getBluetoothAddress() + " beacon is the closest to you");
        }
0
ответ дан Deven 22 March 2019 в 11:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: