Что означает var n = (t.currentDevicePixelRatio = e || ("undefined"! = Typeof window && window.devicePixelRatio) || 1); значит? - PullRequest
1 голос
/ 02 августа 2020
var n = (t.currentDevicePixelRatio = e || ("undefined" != typeof window && window.devicePixelRatio) || 1);

Может кто подскажет, что это значит? Я знаю "||" означает «ИЛИ», и я знаю, что выражение типа

n = n || {}

устанавливает значение n для пустого объекта, если n является ложным значением. Но что происходит, если у вас там есть знак равенства? А второй компонент мне еще более странен.

Ответы [ 2 ]

1 голос
/ 02 августа 2020

Давайте добавим немного пробелов, чтобы сделать его более читабельным:

    var n = (
        t.currentDevicePixelRatio = e
        ||
        (
            "undefined" != typeof window
            &&
            window.devicePixelRatio
        )
        ||
        1
    );

JavaScript выражения вычисляются слева направо, сначала скобки. Таким образом, порядок оценки:

  1. Скопируйте значение e в t.currentDevicePixelRatio.
  2. Затем значение e выдается оператором присваивания =.
  3. Если это значение является ложным, тогда оцените правую часть ||:
  4. Итак, если e не является нулевым (или неопределенным или пустая строка), тогда это и значение e также присваивается n, и выражение завершается.
  5. В противном случае, если window определено (т.е. этот скрипт выполняется в сети- браузер, в отличие от Node.js), затем скопируйте значение window.devicePixelRatio в t.currentDevicePixelRatio, а также в n.
  6. Если window.devicePixelRatio не определено, используйте 1 для обоих t.currentDevicePixelRatio и n.
1 голос
/ 02 августа 2020

Вот как отдельные шаги разбиваются на:

var n;

if (e) {
    t.currentDevicePixelRatio = e;
    n = t.currentDevicePixelRatio;
} else if ("undefined" != typeof window && window.devicePixelRatio) {
    t.currentDevicePixelRatio = window.devicePixelRatio;
    n = t.currentDevicePixelRatio;
} else {
    t.currentDevicePixelRatio = 1;
    n = t.currentDevicePixelRatio;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...