Условное ассигнование в языке сценариев JavaScript (var в = в || [];)

Я работаю с кодом в языке сценариев JavaScript и нахожу какие-то линии, которые делают эту операцию:

var a = a || [];

Что я увидел во всех этих линиях, что я идентифицировал, дело в том, что главный файл - тот же самый: объявлять переменную и распределять этой стоимость операции или переменной, только что созданной против пустого array

Какова цель это реализовывать?

5
задан 25.01.2016, 20:22
5 ответов

Нужно иметь в виду, что javascript, когда ты удваиваешь заявление переменной, он не выражает никакого предупреждения. Просто сведи оба заявления к единственному заявлению в начале функции.

function w() {
  var a; 
  // codigo en el medio
  var a;
}

он сокращается как var a = undefined; в начале функции.

Сейчас, в функции где a высказываются, как аргумент, происходит то же самое, ты удваивал бы заявление, и javascript он сведет дубликат к единственному заявлению.

В Ответ

Эта техническая он был использован в ECMAScript 5, чтобы объявлять стандартную настройку аргументов.

Пример: (ECMAScript 5)

function x(a) {
  var a = a || []; // valor por defecto de a, las declaraciones se unen.
  // hacer algo con a
}

x(); // sin argumentos, a se establecerá como []
x({}); // a se establecerá como {}

Лично я думаю, что он не является очень рекомендуемым, использовать var когда уже ты определил переменную как аргумент. Лучше оставлять ее без слова var.

function x(a) {
  a = a || [];
  // hacer algo con a
}

Это форма, наименее склонная к ошибкам. Не опытный программист в javascript мог бы верить, из-за здравого смысла, что второе заявление a, скрой первую, вещь, которая была бы ошибкой Вашей стороны.

Считай этот пример:

function x(a) {

  // codigo aqui

  if (condicion) {
     var a = a || []; // esta a es la misma a que en la declaracion de funcion
     // hacer algo con a
  }
}

Как уже мастер на все руки, заявление двигается сначала и var a не объявляй новую переменную, которая стоится только внутри if. Это та же переменная a для всей функции. В отличие от других языков.

В конце концов, в ECMAScript 2015 техника уже не необходима, из-за которого ты можешь объявлять стандартную настройку в заявлении функции этой формы:

function x(a = []) {
  // hacer algo con a
}
3
ответ дан 24.11.2019, 14:57

Цель это делать состоит в том, чтобы поддерживать стоимость переменной, если уже она была определена заблаговременно.

В этом случае в особенности (var a = a || [];) то, что делается, что если переменная a уже она была определена ранее в коде, он поддается, как он был (a). Но если она еще не была определена, инициализируется пустой array ([]).

6
ответ дан 24.11.2019, 14:57
  • 1
    Я думаю, что его понимает себя лучше, и кроме того был быстрее +1. Привет – Angel Angel 24.01.2016, 07:06

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

Оператор ||, как во многих других языках, это - оператор логического разъединения, а именно, operaciñon OR. Итак, в языке сценариев JavaScript, этот оператор не возвращает true или false поскольку было бы нужно ждать, но он возвращает первую стоимость, которая оценивается как верно в цепи. Если вышеупомянутая стоимость не существует, а именно, все аргументы фальшивые, он возвратит себе последнюю стоимость цепи.

Так, var a = a || [] функционируй следующего способа:

  • Оценивается стоимость a:
    • Если a он содержит верную стоимость, возвращает себе Вашу стоимость.
    • Если a он содержит фальшивую стоимость (например undefined, если не прошел аргумент), он продолжает оценку.
  • Оценивается стоимость []:
    • Последняя стоимость в цепи, возвращают под существо прямо.

Таким образом, на более высоком уровне, мы имеем: 1 - Если a будь определена, возврати Вашу стоимость. - Если a не будь определена, возврати [].

Поскольку хорошо было сказано заблаговременно, это используется для того, чтобы признавать обычно стандартной настройкой аргументов функции. Должна иметься специальная забота с этим главным файлом, если функция соглашается как действительные любая из следующей стоимости:

  • null
  • false
  • 0
  • '' (один string я опустошаю)

Вся эта стоимость оценивается как фальшивые, из-за того, что мы могли бы получать фальшивые позитивы. Конечно, если эта стоимость будет стандартной настройкой, ничто не изменится: a || 0 он возвратит 0 так если a он 0 как будто она не определена.

В случае, если какая-либо из вышеупомянутой стоимости будет действительной, использует следующий главный файл в Вашем месте:

var a = (a !== undefined) ? a : []

Конечно, используй стандартную настройку, желаемую вместо [].

2
ответ дан 24.11.2019, 14:57

Он заканчивает тем, что что-то подобное:

Если существует переменная a и будь определена, оставь переменную a как он был, и если она не определена, он распределяет ссылку на нового array пустота.

0
ответ дан 24.11.2019, 14:57

Служи для того, чтобы определить стандартную настройку в случае, который a он не существует

a = a || []; //definir [] si a no existe

Также это форма, чтобы определять стандартную настройку в параметрах функций

function drinkBeers(beers) {
   beers = beers || valorXdefecto;
}
0
ответ дан 24.11.2019, 14:57

Теги

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